本文属于Golang学习之旅的一部分,更多文章可到Golang中可见。python
本文只要讲讲Golang和其余语言的,差别性,让你能够在其余中,能够快速切换到Golang中。
Golang吸取了大量语言的特性,有pythone的简单开发,也解决了不少问题,至于为何选择使用Golang,只要的PHP的局限性太大,JAVA过重。Pythone作数据分析,本身的能力不行。
Docker是K8s,K3s都是又golang编写的,搞很差之后能够往架构的方面发展。golang
咱们先看一下的代码编程
package main //包,代表代码所在的模块 import ( "fmt" "os" ) //引入代码依赖包 //功能实现 func main() { if len(os.Args) > 0 { fmt.Println("Hello World",os.Args[0]) } os.Exit(-1) }
能够见的Golang的一个基本组成结构。
须要一个package
,import
和其余语言没有多大区别,还须要一个主运用程序函数func main
架构
咱们只须要注意
1.必须是main包:package main
2.必须是main方法:func main()
3.文件名不必定是main.go 不少教程都这么写致使不少人觉得这个是必要的入口文件编程语言
退出返回值
与其余主要的编程语言的差别
Go中mian函数不支持任何返回值
经过os.Exit来返回状态函数
获取命令行参数
与其余主要的编程语言的差别
mian 函数不支持传入参数 好比func main(arg [] string)
在程序中直接经过os.Args获取命令行参数学习
因为为了方便一些代码都用Test的方式来实现。
编写测试程序
1.源码文件以_test结尾:xxx_test.go
2.测试方法名以Test开头:func TestXXX(t *testing.T) {...}测试
路径为 src/ch2/fibui
package fib import ( "testing" ) func TestFibList(t *testing.T) { var ( a int = 1 b int = 1 ) t.Log(a) for i := 0; i < 5; i++ { t.Log(" ", b) tmp := a a = b b = a + tmp } } func TestExchange(t *testing.T) { a := 1 b := 2 a, b = b, a t.Log(a, b) }
这里注意的是
= 是赋值, := 是声明变量并赋值。命令行
// = 使用必须使用先var声明例如: var a a=100 //或 var b = 100 //或 var c int = 100 // := 是声明并赋值,而且系统自动推断类型,不须要var关键字 d := 100
变量赋值
与其余主要的编程语言
赋值能够进行自动类型推断
在一个赋值语句中能够对多个变量进行同时赋值
常亮定义
与其余主要的编程语言
快速设置连续值
const (
Monday = iota + 1 Tuesday Wednesday
)
const (
Open = 1 << iota
Close
Pending
)
数据类型有以下
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte
run3
float32 float64
complex64 complex128
package type_test import "testing" type MyInt int64 func TestImplicit(t *testing.T) { var a int32 = 1 var b int64 b = int64(a) var c MyInt c = MyInt(b) //go比较严格别名也是不支持 t.Log(a, b, c) } /* 指针类型 不支持指针运算 string时值类型,其默认的初始化值为空字符串,而不是 nil */ func TestPoint(t *testing.T) { a := 1 aPtr := &a t.Log(a, aPtr) }