如题,体验新的开发语言,从零开始。
准备事宜@
,在windows上通过安装包方式安装了go 1.21.1版本的jdk。
,在windows上安装了个好用的vscode然后装上了一个go插件,为了高亮和提示😂。
,在d盘放了个新文件夹,且叫它 goexp吧。
,熟悉一下初始化mod的命令,go mod init goexp。最后一个是我的根目录名称,就这么叫了。你只要知道这个定义了开发的go版本个依赖包就行了。
,熟悉下测试命令,go run test.go。这个干嘛?👉🏽编译,链接,生成可执行文件,运行它。
,熟悉一下构建命令,go build test.go,诺,它就搞出来了test.exe,你可以盘他了。
写个代码玩哈子@先环境拿起来
,来搞个源码文件,放这里啦👉🏽d:/goexp/test.go
,来vscode打开goexp目录,信任它👀没错就这样。
,这样就把目录打开了,无语,来ctrl j,搞起来。初始化下,go mod init goexp
,vs打开test.go,提示装插件,ok,装!
,好,看起来一切正常,大功告成。来coding吧。
写个测试吧,首先是入口,懂?
package main
import "fmt"
func main(){
fmt.Println("是他是他就是他")
}
,🤙不错,代码写的不错,来输入bash命令来测试下@ go run test.go
成功运行就打印出来了。
至此,环境就ok了。很简单是不啊。
好,现在总结经验教训。
经验教训
,如果你跑不起来,重新按步骤模仿。
,入口?嗯嗯,必须是package main 并且只允许一个main()
,import?嗯嗯,这个导入包,上面是引入一个,引入多个用()包裹起来,一个引用一行不要逗号结尾。
,每个语录不需要逗号结束,这个挺好👌🏻简洁
,如果定义了变量,懵管全局还是局部,没有使用,红线警告(代码提示报错)⚠️
,全局变量?不在func 函数体内,野种就是它。
,数据类型呢?还没涉及,不难,模仿模仿就好。举个栗子🌰
var name string // 定个义啦
name="abc" // 赋个值啦
var name string = "abc" //标准的定义并赋值
name := "abc" //简化版定义并赋值
呐,都告诉你了,就按这样来,一般类型就这样。
数据类型
有好多类型啦
简单的数据类型
无符号的举例: uint8 uint32 uint64 , 多说一句啦,无符号就是说为正整数
有符号举例:int int32 int64,多说一句,int == int32
浮点数:float32 float64
布尔:bool
字符串:string,多说一句,通过+号可以拼接,通过strings包下的库函数来操作剪切复制等
字节:byte, 多说一句,没有字符类型,用byte来存
复杂点的数据类型
结构体:struct,多说一句,用结构体模拟面向对象中的对象,用指针来实现对象的传递
数组:[]int, []bool,多说一句,一维数组套娃就是多维数组啦,遍历时需要一层一层的解开就好啦
package main
import (
"fmt"
"strconv"
)
func main() {
fmt.Println("是他是他就是他")
btypes()
testStruct()
}
func btypes() {
var a int = 1
var b, c int = 3, 2 // ,可以多个一起定义哦,赋值时也要成对的
fmt.Println(a, b, c)
b = a + c
fmt.Println(a, b, c)
name := "张三"
alias := "法外狂徒"
age := 33
money := 999999.99
fmt.Println(name, alias, age, money)
fmt.Println("取地址:", &money)
SwapInt(&a, &c)
fmt.Println("使用指针交换两个变量的值,通过地址传递", a, c)
}
func SwapInt(a, b *int) {
*a = *a ^ *b
*b = *a ^ *b
*a = *a ^ *b
}
type User struct {
Name string
Age uint8
}
func (u *User) ToString() string {
return "Name=" + u.Name + ",Age=" + strconv.Itoa(int(u.Age))
}
func testStruct() {
u1 := User{}
fmt.Println(u1)
u1.Name = "张三"
u1.Age = 33
fmt.Println(u1, u1.ToString())
}
总结一下
通过简单的演练,我们可以得到一些经验:
,怎么做数据类型转换,比如 Age uint8 ,但是 strconv.Itoa(int) 必须是int类型入参,做强制转换
,怎么通过指针完成地址传递,去区别于值传递(c中的形参属于函数自己)
,通过给自定义类型绑定方法,这里绑定了ToString()自己定义的User结构体自带的函数
,函数定义,func + [绑定对象或指针,可选] name([参数或指针列表,可选]) [返回值或指针,可选] { 函数体 }
,可以实现函数的地址传递,函数可以到处跑,就问你怕不怕。在大数据里面是数据到处跑。
最后:
这里实际上已经包含大部分语法基础的需要了解的内容,文档会继续完善更新,对于逻辑控制部分其实也不难,后续补充。