内容简介:变量声明基本变量类型分为:int、string、数组、切片数据(动态长度数组)、结构体、指针、Map、函数等。var 简化写法,例子:
变量声明
var v1 int var v2 string var v3 [10]int var v4 []int var v5 struct { f int } var v6 *int var v7 map[string] int var v8 func(a int) int
基本变量类型分为:int、string、数组、切片数据(动态长度数组)、结构体、指针、Map、函数等。
var 简化写法,例子:
var ( v1 int v2 string )
变量初始化
var v1 int = 10 var v2 = 10 v3 := 10
v1 为正常方式。v2 & v3 可以自动推导类型。v3的方式不能作用于全局变量。
警告::= 左侧的变量不可以提前声明,比如 var v1 = 10; v1 := 10;该写法会导致编译器报错。
匿名变量
package helloworld func getName() (string, string, string, string) { firstName := "firstName" lastName := "lastName" nickName := "nickName" middleName := "middleName" return firstName, lastName, nickName, middleName }
package main import ( "fmt" ) func main(){ _, _, _, middle := getName() fmt.Println(middle) } // print -> "middleName"
常量
package main import ( "fmt" ) func main(){ const NAME = "name" fmt.Println(NAME) }
常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。
预定义常量
true false iota // 常量计数器
枚举
const ( Sunday = iota Monday Tuesday Wednesday Thursday Friday Saturday numberOfDays // 这个常量没有导出 )
Go 语言中,以大写字母开头的常量在包外可见。numberOfDays 该常量只能在包内可用。
数据类型
基础数据类型
布尔类型:bool 整型:int8、byte、int16、int、uint、uintptr等 浮点类型:float32、float64 复数类型:complex64、complex128 字符串:string 字符类型:rune 错误类型:error
int8:取值范围为 -128~127
复合数据类型
指针(pointer) 数组(array) 切片(slice) 字典(map) 通道(chan) 结构体(struct) 接口(interface)
数值运算
+ - * / %
比较运算符
> >= < <= == !=
位运算
x << y 左移 124 << 2 // 结果为496 x >> y 右移 124 >> 2 // 结果为31 x ^ y 异或 124 ^ 2 // 结果为126 x & y 与 124 & 2 // 结果为0 x | y 或 124 | 2 // 结果为126 ^x 取反 ^2 // 结果为-3
遍历字符串
package main import ( "fmt" ) func main() { str := "hello 世界!" for _, s := range str { fmt.Println(string(s)) } }
数组及数组切片
arr1 := [5]int{1,2,3,4,5} arr2 := []int{}
数组长度在定义之后,不能更改。数组切片可以。
流程控制
条件语句:if-else & else-if 选择语句:switch & case & select 循环语句:for & range 跳转语句:goto 其他关键字:break & continue & fallthrough
条件语句 if-else
package main import ( "fmt" ) func main() { a := 1 if a > 3 { fmt.Println("a > 3") } else { fmt.Println("a > 3 is fail") } }
警告:有返回值的函数中,if-else控制语句中不允许直接return
选择语句 switch
package main import ( "fmt" ) func main() { i := 0 switch i { case 0: fmt.Println("0") case 1: fmt.Println("1") case 2: fmt.Println("2") } } // print -> "0"
循环语句 for
package main import ( "fmt" ) func main() { for i := 0; i < 10; i++ { fmt.Println(i) } } // print -> 1 ~ 9
函数
func (参数列表)(返回值列表) { 函数体 & 返回语句 }
不定参数
package main import ( "fmt" ) func myFunc(args ...int) { for _, i := range args { fmt.Println(i) } } func main() { myFunc(1, 2, 3, 4) } // print -> 1 2 3 4
警告:...type格式的类型只能作为函数的参数类型存在,并且必须是最后一个参数
匿名函数
func(a, b int) int{} // 执行匿名函数 func(a,b int) int{}(1, 2) // 赋值 f := func(a ,b int) int{}
闭包
package main import ( "fmt" ) func main() { i := 5 f := func() func() { j := 10 return func() { fmt.Println(i, j) } }() f() i = 10 f() } // print -> 5 10 // print -> 10 10
错误处理
package main import ( "errors" "fmt" ) func main() { err := errors.New("this is a bug") fmt.Println(err) } // print -> "this is a bug"
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
人类2.0
皮埃罗∙斯加鲁菲(Piero Scaruffi) / 闫景立、牛金霞 / 中信出版集团股份有限公司 / 2017-2-1 / CNY 68.00
《人类2.0:在硅谷探索科技未来》从在众多新技术中选择了他认为最有潜力塑造科技乃至人类未来的新技术进行详述,其中涉及大数据、物联网、人工智能、纳米科技、虚拟现实、生物技术、社交媒体、区块链、太空探索和3D打印。皮埃罗用一名硅谷工程师的严谨和一名历史文化学者的哲学视角,不仅在书中勾勒出这些新技术的未来演变方向和面貌,还对它们对社会和人性的影响进行了深入思考。 为了补充和佐证其观点,《人类2.0......一起来看看 《人类2.0》 这本书的介绍吧!