【Go基础】编译、变量、常量、基本数据类型、字符串

简介: 编译、变量、常量、基本数据类型、字符串

编译


  • 使用 go build


  1. 在项目目录下执行
  2. 在其他路径下编译 go build ,需要再后面加上项目的路径(项目路径从GOPATH/src后开始写起,编译之后的可执行文件就保存再当前目录)
  3. 打包的时候自定义名字:go build -o 自定义包名


go run


像执行脚本文件一样执行 go 代码


go install


go install 分为两步:


  1. 先编译得到一个可执行文件
  2. 将可执行文件拷贝到'GOPATH/bin'


交叉编译跨平台编译


  1. Go支持跨平台编译
  2. 例如:在mac平台或者Windows平台编译出可以运行在Linux平台的二进制文件
  3. 示例代码:Mac 下编译 Linux 和 Windows平台 64位 可执行程序:


CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
复制代码


go语言文件的基本结构


//导入语句 双引号包裹
import "fmt"
//函数外只能放置标识符(变量,常量,函数,类型)的声明;不能放置语句
//程序的入口函数
func main() {
    fmt.Println("hello world")
}
复制代码


变量和常量


  • 标识符和关键字
  • 关键字
  • 保留字


变量


博客go的变量要先声明再使用


声明变量


var sl string 声明一个保存字符串类型的变量s1

var age int

var isOk bool


注意事项


  1. 函数外的每个语句必须以关键字开始(var、const、func等)
  2. := 不能在函数外使用
  3. _ 多用于占位,标识值可以忽略


package main
import "fmt"
//go语言中推荐使用驼峰命名
// var studentName string
//声明变量
// var name string
// var age int
// var isOk bool
//批量声明  声明全局变量建议使用批量声明,方便追加
var (
  name string // ""
  age  int    // 0
  isOk bool   // false
)
//匿名变量使用_指定,匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。
func main() {
  name = "理想"
  age = 18
  isOk = true
  // var test = string
  //go语言中非全局变量声明了就必须使用,不使用就无法编译(全局变量声明了不使用也可以编译通过)
  fmt.Print(isOk) //在终端中输入要打印的内容
  fmt.Println()
  fmt.Printf("name:%s\n", name) // %s是一个占位符 使用name这个变量的值替换%s占位符
  fmt.Println(age)              //打印完指定的内容后,会加一个换行符
  // test = "111"
  // fmt.Println(test)
  //声明变量的同时赋值
  var s1 string = "wzy"
  fmt.Println(s1)
  //类型推倒  根据值判断变量是什么类型
  var s2 = "lizijie"
  fmt.Println(s2)
  //简短变量声明,只能再函数里面用
  s3 := "luanran"
  fmt.Println(s3)
  // 同一个作用域,不能重复声明同名变量
  // 简单理解作用域,同一个{}就是一个作用域
  // s3 := "huihui"
  // 匿名变量 是一个特殊的变量: _
}
复制代码


基本数据类型


32位和64位操作系统的区别


程序寻址长度,最大支持多少内存,一个老旧的32位Windows操作系统最多只能读取3.8G的内存,安装16G的内存条也只能读取3.8G的内存


八进制和十六进制


  • 八进制数的第一位就是0
  • 十六进制数是0x开头的


字符串


  • Go语言中的字符串是由双引号包裹的


s1 := "123"
s2 := "我们"
s3 := "mystring"
复制代码


  • go语言中单引号包裹的是字符(单独的字母,汉字,符号,数字)


s1 := '1'
s2 := '我'
s3 := 's'
// 字节:1个字节=8Bit(8个二进制位)
// 一个字符'A' = 1个字节
// 一个utf8编码的汉字一般占3个字节 (比如‘沙’)



相关文章
|
19天前
|
Go 索引
【LeetCode 热题100】394:字符串解码(详细解析)(Go语言版)
本文详细解析了 LeetCode 热题 394:字符串解码。题目要求对编码字符串如 `k[encoded_string]` 进行解码,其中 `encoded_string` 需重复 `k` 次。文章提供了两种解法:使用栈模拟和递归 DFS,并附有 Go 语言实现代码。栈解法通过数字栈与字符串栈记录状态,适合迭代;递归解法则利用函数调用处理嵌套结构,代码更简洁。两者时间复杂度均为 O(n),但递归需注意栈深度问题。文章还总结了解题注意事项及适用场景,帮助读者更好地掌握字符串嵌套解析技巧。
40 6
|
5月前
|
存储 Go 索引
go语言中遍历字符串
go语言中遍历字符串
95 5
|
1月前
|
存储 机器学习/深度学习 缓存
🚀 力扣热题 394:字符串解码(详细解析)(Go语言版)
文章提供了两种解法:栈结构和递归解法。栈解法通过维护数字栈与字符串栈,依次处理 `[` 和 `]`,构造解码结果;递归解法则利用函数调用逐层解析嵌套结构。两者时间复杂度均为 $O(n)$,空间复杂度也为 $O(n)$。栈解法直观易懂,适合初学者;递归解法优雅简洁,适合处理深度嵌套规则。掌握这两种方法,可灵活应对类似问题,提升解题能力。
71 11
|
4月前
|
监控 Java Go
编译时插桩,Go应用监控的最佳选择
本文讲解了阿里云编译器团队和可观测团队为了实现Go应用监控选择编译时插桩的原因,同时还介绍了其他的监控方案以及它们的优缺点。
773 113
|
4月前
|
Go
go语言for 遍历字符串
go语言for 遍历字符串
55 8
|
5月前
|
Go 索引
go语言遍历字符串
go语言遍历字符串
86 3
|
5月前
|
存储 编译器 Go
go语言中的变量、常量、数据类型
【11月更文挑战第3天】
60 9
|
5月前
|
Go
go语言的复数常量
【10月更文挑战第21天】
69 6
|
5月前
|
Go
go语言的浮点型常量
【10月更文挑战第21天】
68 4
|
5月前
|
编译器 Go
go语言的整型常量
【10月更文挑战第21天】
60 3

热门文章

最新文章

下一篇
oss创建bucket