Go 语言变量、常量

变量

第一种,指定变量类型,声明后若不赋值,使用默认值。

var v_name v_type
v_name = value

第二种,根据值自行判定变量类型。

var v_name = value

第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。但是只能在函数体内使用,否则不报错

v_name := value

// 例如
var a int = 10
var b = 10
c := 10

举例子

//声明变量
var a int =10
var b=20
var d string="mygo"
//这个地方会报错:syntax error: non-declaration statement outside function body
//原因在于 := 只能用于方法内,当定义全局变量时只能通过 var 关键字来定义
// c :=30  

// 这种因式分解关键字的写法一般用于声明全局变量
var(
    e int
    f bool
)

//类型相同多个变量, 非全局变量
//全局变量是允许声明但不使用
var v1, v2, v3= 1, 2, 3  //必须先声明,然后修改变量
var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断

func main() {
    //局部变量声明后必须使用
    c :=30
    fmt.Println(a,b,d,c,d,e,f,vname3)  //10 20 mygo 30 mygo 0 false
}

 常量:

常量是一个简单值的标识符,在程序运行时,不会被修改的量。

常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型  

常量的定义格式:

const identifier [type] = value

你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。

  • 显式类型定义: const b string = "abc"
  • 隐式类型定义: const b = "abc"

多个相同类型的声明可以简写为:

const c_name1, c_name2 = value1, value2
//常量 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
const indentifiter int=100  //显式类型定义
const c_namme="zzy"   //隐式类型定义,引号用双引号,单引号报错
const (   //常量还可以用作枚举:
    Unknown = 0
    Female = 1
    Male = 2
)

func main() {
    print("&&&",Unknown)  //&&&0
    const LENGTH int =10
    const WIDTH int =5
    fmt.Println(indentifiter,c_namme,LENGTH *WIDTH,Unknown,Female,Male)   //100 zzy 50 0 1 2
}

常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:

package main

import "unsafe"
const (
    a = "abc"
    b = len(a)
    c = unsafe.Sizeof(a)
)

func main(){
    println(a, b, c)
}
//abc 3 16

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

iota 可以被用作枚举值:第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:

package main

import "fmt"

func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}
//0 1 2 ha ha 100 100 7 8

下面这种用法,没看出用处

i=1<<0

j=3<<1

k=3<<2

l=3<<3
/*
- **j=3**:左移 1 位,变为二进制 110, 即 6;
- **k=3**:左移 2 位,变为二进制 1100, 即 12;
- **l=3**:左移 3 位,变为二进制 11000,即 24。
- **i=1**:左移 0 位,不变仍为 1;
*/

原文地址:https://www.cnblogs.com/zzy-9318/p/10191851.html

时间: 2024-11-09 10:40:07

Go 语言变量、常量的相关文章

1.go语言之常量和变量

1.标识符与关键字 1.1标识符 在编程语言中,标识符就是程序员定义的具有特殊意义的词.比如变量名.常量名.函数名等. Go语言中的标识符由字母,数字和_(下划线)组成,只能以字母和_(下划线)开头. 例如:abc,_abc,_123,a123. 1.2关键字 关键字是编程语言中预先定义好的具有特殊含义的标识符.关键字和保留字都不建议用于变量名. Go 语言中有25个关键字: break default func interface select case defer go map struct

每天一点Go语言——变量、常量、运算符解析

每天一点Go语言--变量.常量.运算符解析 前言 ? 前面简单说过有关Go语言的基础语法及其数据类型,大致上了解了Go语言程序的组成,而本文将讲述近乎所有编程语言都涉及的变量.常量以及运算符相关内容. 一.变量 何为变量? ? 对该专业名词解释:计算机语言中能储存计算结果或能表示值抽象概念.变量可以通过变量名访问.Go语言中的变量由字母.数字.下划线组成,首字母不可以为数字.耳熟能详了哈~ ? 笔者的理解:我编写程序的时候需要使用一个值,并且我一直想要重复使用,而且有时候这个值会发生变化等等,所

黑马程序员-c语言变量作用域问题

c语言中的变量作用域总结 不管什么语言,main好像总是程序的入口,大括号是它的内容:变量的作用域总是困扰着我们,接下来,我们循序渐进的搞明白c语言中的变量作用域,首先得知道c是弱类型的语言,弱类型表现在很多方面: 1:你可以直接在程序中写一个常量,然后一个分号:1: 2:在定义函数时,void型的函数可以return:int型的可以不用写返回值. ---还有很多 下面我们一步一步开始:首先在main中定义的变量当然作用于整个main函数了 1:在main中定义变量 #include<stdio

C语言变量的类型和存储位置

1. C语言变量主要分为全局变量.静态全局变量.局部变量.静态局部变量和寄存器变量.其中静态变量用static关键字进行修饰.程序所占用的内存可以分为以下几个部分: (1)代码段-存放程序代码,只读的,不能修改. (2)全局区(静态区),又称为数据段.其中.data段存放的是已经初始化的全局变量和静态变量(静态全局变量和静态局部变量)..bss段存放的是未初始化的全局变量和静态变量(静态全局变量和静态局部变量).bss段会将未初始化的变量填充为0. (3) 堆: 是一种线性结构,类似链表实现,也

Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化

Python入门(二)--IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化 我们从今天就开始正式的学习PY交易了,PY交易还行,我们有基础之后学习起来倒不是说那么的被动,我学习的是Python2.7,虽然现在随着版本的迁移至Python3,但是这个并不会对我们造成什么困扰,毕竟只是一个适应阶段 我们的学习资料:廖雪峰官方网站Python2.7教程 一.IDE选择PyCharm 我们虽然在前面一章已经配置过,但是我们还是有很多的IDE可以开发Py,比如su

JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都是很痛苦的事情,但是程序之路这么长,你必须精通的不能再精通一门语言才行(有点说大了哈),但是最起码你要如鱼得水吧,我准备的资料有: JAVA编程思想 深入浅出JAVA 黑马,传智,慕课,极客学院等-的视频 Google搜索 我们既然是重新学一遍,那我们尽量就是用记事本去敲代码好了,这里我用notep

C语言变量声明内存分配

转载: C语言变量声明内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈.程序结束时由编译器自动释放. 2.堆区(heap) — 在内存开辟另一块存储区域.一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 .注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵. 3.全局区(静态区)(static)—编译器编译时即分配内存.全局变量和静态变量

ES6变量常量字符串数值

[转]ES6之变量常量字符串数值 ECMAScript 6 是 JavaScript 语言的最新一代标准,当前标准已于 2015 年 6 月正式发布,故又称 ECMAScript 2015. ES6对数据类型进行了一些扩展 在js中使用ES6必须先声明 严格模式 "use strict" let变量 let特性: 1.不允许重复声明 2.没有预解析. 3.块级作用域 一对{}包括的区域称为代码块 块级作用域指一个变量或者函数只在该区域才起作用. 例: "use strict&

iOS开发Swift篇(01) 变量&amp;常量&amp;元组

iOS开发Swift篇(01) 变量&常量&元组 说明: 1)终于要写一写swift了.其实早在14年就已经写了swift的部分博客,无奈时过境迁,此时早已不同往昔了.另外,对于14年部分iOS开发Swift篇专题的博文也不再做任何的校正和更新,特此说明. 2)该博文对应代码可以在https://github.com/HanGangAndHanMeimei/Code获得. 一.变量和常量 01 变量和常量的定义 在swift中变量使用var来修饰,常量使用let来修饰,变量可以修改而常量不

1005------C语言-----------C语言变量的存储方式解析

0.背景 在看APUE第七章的时候,作者分析了setjmp和longjmp这种函数间跳转机制对不同存储类型变量的影响,看到register,auto,volatile,static等等这些关键字很模糊,也可能太少用了,但是自认为C语言基础不错的我还是不能接受任何不懂的知识点,于是就捋了捋思路. 1.C语言变量的基本属性 在C语言中,每一个变量都有3个属性: (1)类型,就是常用的int.char等,它确定了变量存储长度和运算方式: (2)作用域,根据变量所处的位置分为全局变量和局部变量: (3)