Go语言入门(go环境配置,变量和常量)

打印 上一主题 下一主题

主题 1927|帖子 1927|积分 5781

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
go语言特点


  • 天然支持高并发
  • 语法简单,去掉很多臃肿的东西
  • 优化的内存分配和垃圾处理
  • 完善的标准库
go安装

下载:Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com)
go version判断是否安装成功
配置环境变量GOROOT ,GOPATH

go env查看环境变量配置
goland开发工具安装

Download GoLand: A Go IDE with extended support for JavaScript, TypeScript, and databases (jetbrains.com)
第一个go程序(HelloWorld)

​         当编译器发现某个包的名字为main时,它一定也会发现名为main()的函数,否则不会创建可执行文件,main()函数是程序的入口,所以,如果没有这个函数,程序就没有办法开始执行。程序编译时,会使用声明main包的代码所在的目录的目录名作为二进制可执行文件的文件名
  1. // 可执行文件必须有main包,一个项目只有一个main
  2. package main
  3. // 导入一个系统包fmt用来输出(format)
  4. import "fmt"
  5. func main() {
  6.         //打印字符串
  7.         fmt.Println("HelloWorld!")
  8. }
复制代码
控制台执行方法:go run + 文件名
变量 (显示声明变量数据类型,var 关键字,变量名小驼峰)

​        go语言时静态语言类型,因此每次定义变量必须声明其数据类型,定义结束后没有使用会爆错,没有定义初值,会自动定义默认值
  1. 1. 整型和浮点型默认0和0.0
  2. 1. 字符串变量的默认值为空字符串
  3. 1. 布尔型变量默认为false
  4. 1. 切片,函数,指针变量默认为nil
复制代码
单行变量定义 var + 变量名 + 数据类型
  1. package main
  2. import "fmt"
  3. func main() {
  4.     // 定义字符串型变量tmp
  5.         var tmp string = "robot01"
  6.         fmt.Println(tmp)
  7. }
复制代码
批量定义变量 var ()
  1. package main
  2. import "fmt"
  3. func main() {
  4.         var (
  5.                 name    string
  6.                 age     int
  7.                 factory string
  8.         )
  9.         name = "robot01"
  10.         age = 18
  11.         factory = "factory01"
  12.         fmt.Printf("Name:%s \nAge:%d \nFactory: %s \n", name, age, factory)
  13. }
复制代码
短变量声明以及初始化  变量名 := 值

​        编译器可以根据右值的数据类型,自动推导变量的数据类型,左值的变量名,不得与其他变量名相同
  1. package main
  2. import "fmt"
  3. func main() {
  4.         name := "robot01"
  5.         age := 18
  6.         factory := "factory01"
  7.         fmt.Printf("Name:%s \nAge:%d \nFactory: %s \n", name, age, factory)
  8. }
复制代码
变量交换
  1. package main
  2. import "fmt"
  3. func main() {
  4.         tmpA := 100
  5.         tmpB := 200
  6.     // tmpA 与 tmpB进程值交换,不需要使用中间键
  7.         tmpA, tmpB = tmpB, tmpA
  8.         fmt.Printf("tmpA = %d \ntmpB = %d", tmpA, tmpB)
  9. }
复制代码
匿名变量

​        匿名变量的特点是一个下划线 "_" ,下划线本身就是一个特殊的标识符,被称为空白标识符,它可以像其他标识符一样用于变量的声明或者赋值(任何类型都可以赋值给它),但任何赋值给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其他变量进行赋值或运算。使用匿名变量时,只需要在变量声明的地方使用下划线替换即可
  1. package main
  2. import "fmt"
  3. func test() (int, int) {
  4.         return 100, 200
  5. }
  6. func main() {
  7.     // test()函数固定返回两个返回值,但是只需要第一个返回值,因此使用匿名变量来抛弃掉第二个返回值
  8.     // 使代码更加的灵活
  9.         tmpA, _ := test()
  10.         fmt.Printf("tmpA = %d", tmpA)
  11. }
复制代码
​        匿名变量不占用内存空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用
变量的作用域

局部变量(在函数内部定义的变量)& 全局变量(在函数外部定义的变量)
⭐局部变量和全局变量可以使用同样的名字,使用时依据就近原则
⭐全局变量必须使用var关键字定义,(:=)不能定义全部变量
  1. import "fmt"
  2. var tmpA int = 100
  3. func test() {
  4.         fmt.Printf("test() => tmpA = %d \n", tmpA)
  5. }
  6. func main() {
  7.         tmpA := 200
  8.         fmt.Printf("main() => tmpA = %d \n", tmpA)
  9.         test()
  10. }
  11. // 输出:
  12. // main() => tmpA = 200
  13. // test() => tmpA = 100
复制代码
常量(const)(简单值的标识符,不可以被修改)
  1. package main
  2. import "fmt"
  3. func main() {
  4.         // 显式定义常量
  5.         const URL1 string = "www.baidu.com"
  6.         // 隐式定义常量
  7.         const URL2 = "www.tequila.com"
  8.         // 批量定义常量
  9.         const ROBOTNAME, ROBOTAGE = "robot-01", 18
  10.         fmt.Printf("URL1: %s\nURL2: %s\nROBOTNAME: %s\nROBOTAGE: %d\n", URL1, URL2, ROBOTNAME, ROBOTAGE)
  11. }
复制代码
iota 常量

​        iota,可以被认为是一个可以被编辑器修改的常量,是go语言里的常量计数器,iota在const关键字出现时将被重置为0,const 中每新增一行常量声明将使iota计数一次
  1. package main
  2. import "fmt"
  3. func main() {
  4.         const (
  5.                 tmpA = iota
  6.                 tmpB = iota
  7.                 tmpC
  8.                 tmpD
  9.                 tmpE = "String"
  10.                 tmpF = iota
  11.                 tmpG
  12.         )
  13.         fmt.Println(tmpA, tmpB, tmpC, tmpD, tmpE, tmpF, tmpG)
  14. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表