Golang和其他语言的差异

文章目录
  1. 1. Golang的类型转换

本文只要讲讲Golang和其他语言的,差异性,让你可以在其他中,可以快速切换到Golang中。Golang吸收了大量语言的特性,有pythone的简单开发,也解决了很多问题,至于为什么选择使用Golang,只要的PHP的局限性太大,JAVA太重。Pythone做数据分析,自己的能力不行。Docker是K8s,K3s都是又golang编写的,搞不好以后可以往架构的方面发展。

我们先看一下的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main //包,表明代码所在的模块

import (
"fmt"
"os"
) //引入代码依赖包

//功能实现
func main() {
if len(os.Args) > 0 {
fmt.Println("Hello World",os.Args[0])
}
os.Exit(-1)
}

可以见的Golang的一个基本组成结构。
需要一个packageimport和其他语言没有多大区别,还需要一个主运用程序函数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

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
26
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)
}

这里注意的是
= 是赋值, := 是声明变量并赋值。

1
2
3
4
5
6
7
8
9
10
// = 使用必须使用先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的类型转换

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
26
27
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)
}
评论