Go语言的学习之旅【二】
一、语言结构
1 2 3 4 5 6 | //这个package是包声明(类似声明变量)//mian是被声明的包名(取main是go程序是可独立执行程序!!!)//文件命名不需要一致,例如test.go文件含有package main也可以当作可独立执行程序package main //fmt是这个程序引入的包,可以调用fmt的公共函数 import "fmt" //优先于mian的执行函数func init(){ fmt.Println("pre main exec init")} //可执行程序必须包含这个,基本启动会执行mian(),不过init()会比它提前执行 func main() { //调用fmt包中的Println函数,首字母是大写表示公共函数,若是小写,则只能为私有函数 fmt.Println( "Hello, World!" ) } |
//下列的文件结构 project --test.go mydir --mydir.go --mydir2.go
//以上的结构,mydir中package命名要相同
mydir.go的内容
package mydir
func MyFunc()(int){
return 1;
}
mydir2.go的内容
package mydir //这个package要跟mydir.go中命名相同,否则会编译错误
func MyFunc2()(int){
return 2;
}
发现go的src文件夹下,fmt的文件夹下存在package fmt跟package fmt_test(表示暂时不太懂)
二、语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //1、行分隔符,可以使用;分号来进行分割(不推荐) fmt.Println('Hello,world! ");fmt.Println(" hello,world!") //直接换行分割 fmt.Println('Hello,world!") fmt.Println( "hello,world!" ) //2、注释 // 单行注释 /* 多行注释 */ //3、标时符 一个标识符实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列 例如:_abc, abc,abc123,a_13等 不正确的标识符: 1abc (数字不能第一位) case ( go 关键字不能用) a+b(运算符不能用) $abc(特殊字符也不可以) ...<br><br> |
三、数据类型
布尔型:bool
整数型:int,int8,int16,int32,int64,uint8,uint16.uint32,uint64,uintptr(指针)
浮点型:float32,float64,complex64,complex128
其他:byte(与uint8类似),rune(与int32类似)
四、变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | var a int = 1 var b string = "欢迎来到go世界" c := false // `:=` 这个是var c bool 声明+赋值 var d = 10 // var d 自适应声明赋值 var e bool //声明(不赋值,必须带上类型) fmt.Println(a+d, "\n" ,b,c,d,e) //使用`+`号必须是相同的类型( var v1 = 1 v1,v2 := 1,2 //使用`:=` 时必须有一个没被声明过的变量(这个写法...) var ( f int g bool ) fmt.Print(f,g,v1,v2) //所有的变量都要被使用到,不然会报错(完全赞同,有时候经常弄个变量,最后没用了,都忘了删) var z,x int = 1,2 //多个变量同类型声明赋值 var n,m = false, "ok" //多个变量不同类型声明赋值 fmt.Println(z,x,n,m) var ( //i 这个批量声明赋值,不能不定义类型 j bool k string = "adfsf" l = false ) fmt.Println(j,k,l,&z) //&z 取到这个z变量在内存中的地址类似c语言 _,o,p := numbers() // `_` 空白变量,不能被使用,可以理解第一个返回值默认丢弃 fmt.Println(o,p) |
五、总结
语言结构,语法,数据类型,变量都跟其他语言差不多,包都定义有点特别,main命名作为独立可执行程序,同一个文件夹下package名要相同,否则会报错,按照文件夹来进行模块区分。
语法中变量的定义格式相比java要少很多,数据类型变了下,int32类似带位数来表示大小,更加直观,还保留c的指针模式。
总体还是挺容易理解,并没有特别特立独行都存在,大多数都是为了减少代码开发。继续探索,gogogo!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
2017-11-30 centos服务器搭建javaweb项目步骤