0
false
"”
golang 中不一样类型之间的变量赋值须要显式的转换golang
//语法格式 T(v) 将 v 转换为 类型 T var i int = 32 var f float64 = float64(i) var u uint = uint(64)
使用 var 声明
不管在函数内仍是函数外,均可以使用 var 声明变量ide
基本语法格式为:
var varName varType
var varName = varValue
var varName1, varName2 varType
var varName1, varName2 = varValue1, varValue2函数在基本语法格式上能够进行一些灵活组合,可是建议不要用花哨的语法ui
//声明可是不初始化(foo 的值为对应变量类型的零值) var foo int; //声明且初始化(var声明初始化的时候不须要指定变量类型,编译器自动根据初始化值肯定变量类型) var bar = 3 //推荐写法 var bar int = 3 //合法可是不推荐 //声明 i1, i2 为 int 类型(初始值为 int 类型的零值 0) var i1, i2 int //声明 i1 和 i2同时赋值为1,2 var i1, i2 = 1, 2 //声明 int 类型的 i1,string 类型的 s1 var i1, s1 = 1, "a" //声明一组全局变量,变量能够初始化或者不初始化 var( i1, i2 = 1, 2 i3, i4 int s1 = "111221" b1 = true )
快捷语法
只能在函数体内使用快捷语法,函数体外非法编码
语法格式
varName1 := varValue1操作系统
func main(){ //声明变量 i1而且同时给变量赋值 i1 := 1 //声明变量 i2,s1而且同时给他们赋值 i2, s1 := 1, "11" }
var声明和快捷语法声明须要注意的地方code
便捷声明方法是声明一个新的变量且赋值,不能用做给 var 声明的变量赋值对象
var foo = 1 func main(){ foo := 10 //输出10 使用的局部变量取值 fmt.Println(foo) //PS: 必定要注意下面有语法错误 var bar int bar := 11 //便捷方式实际上是先声明一个新变量而后给赋值,可是此时 bar 变量已经存在了不能重复定义 }
_
变量
_
用来抛弃忽略某个值,golang 中不容许存在没有使用的变量索引
函数多返回值抛弃字符串
_, r := divide(10, 3)
导入包不使用(可是会调用导入包的 init方法)
import( "fmt" _ "os" )
常量是指变量一旦定义,在编译阶段它的值就是肯定了的,在运行阶段是不能够被改变的,golang 中 number|boolean|string 类型能够定义为常量
定义语法
const constantName = value
cosnt constantName constantType = value
const PI = 3.14 const Pi float32 = 3.14156
golang 中的 基本变量类型主要为 number,bool,string等
关键词 bool
用于定义 boolean类型变量,boolean 类型变量的取值只有 true
和 false
, 零值(默认值)为 false
golang 不容许把 boolean 类型转变为数字类型
golang 不容许类型不一样的变量进行运算,例如 int8类型的变量和 int32类型的变量不能进行加法操做
signed
unsigned
注意没有 float 这个类型
goalng 使用 UTF-8做为编码结合,使用 " 或者 ` 包裹起来的字符就是一个 string
` 定义多行字符串
var s1 = "hello" var s2 = `hello word`
string 对象不容许改变值(可是能够给从新赋值),下面的语法错误
var s = "hello" s[0] = 'c'
若是要改变一个变量的值,须要使用旧的变量建立
s := "heloo" c := byte(s) //string 转换为[]byte 类型 c[0] = 'c' s2 := string(c) //把 c []byte 转为 string fmt.Printf("%s\s\n", s2)
+
能够用来拼接两个字符串
s := "hello, " m := "world" a := s + m fmt.Printf("%s\n", a) //输出 "cello, " s = "c" + s[1:] //返回 "c" + s从索引1到结束的字符串拼接
golang没有 try-catch 语句块处理异常,内置了 error 类型用于处理错误
err := errors.New("some error messaage") if err != nil { //TODO something }
分组定义
若是你想定义多个常量,变量或者导入多个包,可使用分组格式
//如下是非分组形式 import "fmt" import "os" const i = 100 const pi = 3.145 var i int var pi float32 var prefix string //分组形式 import( "fmt" "os" ) const( pi = 3.145 prefix = "GO" ) var( pi float32 prefix string )
iota 枚举
关键字 iota 能够生成枚举类型,枚举值从0开始,每次加1
const( //x == 0 x = iota //y == 1 y = iota //z == 2 z = iota //若是常量名称后面没有任何表达式 //则 w 等价于 w = iota, w == 3 w ) const v = iota //v == 0 //PS 注意在同一行时的 iota 特殊状况 const( //若是 iota 在同一行,则 e == f == g == 0 e, f, g = iota, iota, iota )
变量的可见性
package test //Foo 在包 test 以外能够经过 test.Foo 访问 var Foo //bar 在包 test 以外经过 test.bar 访问是错误的,由于它的首字母是小写,包外不可见 var bar //函数在test 包外可使用 test.Test1()访问 func Test1(){ } //函数在 test 包外不能够经过 test.test2()访问,只能够在包内使用 func test2(){ } //包外使用 test.I访问 Const I = 1 // j 不能够在包外经过 test.j 访问 cont j = 10