体验golang

如题,体验新的开发语言,从零开始。

准备事宜@

,在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([参数或指针列表,可选]) [返回值或指针,可选]  { 函数体 }

,可以实现函数的地址传递,函数可以到处跑,就问你怕不怕。在大数据里面是数据到处跑。

最后:

        这里实际上已经包含大部分语法基础的需要了解的内容,文档会继续完善更新,对于逻辑控制部分其实也不难,后续补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值