本文属于Golang学习之旅的一部分,更多文章可到Golang中可见。
本文只要讲讲Golang和其他语言的,差异性,让你可以在其他中,可以快速切换到Golang中。
Golang吸收了大量语言的特性,有pythone的简单开发,也解决了很多问题,至于为什么选择使用Golang,只要的PHP的局限性太大,JAVA太重。Pythone做数据分析,自己的能力不行。
Docker是K8s,K3s都是又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/fib
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
Golang的类型转换
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)
}
网友评论