Golang基础语法(1)

2023年 9月 17日 48.3k 0

1.语法基础

1.例子

//main函数 
package main

//使用fmt包  实现了IO函数
import "fmt"
//{不能单独放一行
func main() {
    //标识符以一个大写字母开头,可以被外部包的代码使用
    //小写开头,对包外不可见,protected修饰符
	fmt.Print("hello")
    //一行表示一个语句结束
    print("123")
}

如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中我们并不鼓励这种做法。

2.字符串可以使用+ 连接

3.变量声明

var age int

4.格式化字符串

package main

import "fmt"

func main() {
	var age = 123
	var date = "12.1"
	var url = "Code=%d date=%s"
	var result = fmt.Sprintf(url, age, date)
	fmt.Print(result)
}

5.数据类型

1.bool
var b bool = true

2.数字类型

int float32 float64 ,支持复数,位运算采用补码

uint8,16,32,64 无符号整型(后表示位)

int8,16,32,64

float32,64

complex64,128 复数

byte,rune(类似int32),uint(32/64),uintptr(存放指针)

go 1.9版本对于数字类型,无需定义int及float32、float64,系统会自动识别 (有点像python)。

3.字符串类型

UTF-8 编码标识Unicode文本

4.派生类型:
包括:

  • (a) 指针类型(Pointer)
  • (b) 数组类型
  • (c) 结构化类型(struct)
  • (d) Channel 类型 (管道?)
  • (e) 函数类型
  • (f) 切片类型
  • (g) 接口类型(interface)
  • (h) Map 类型

6.声明变量

1.var 关键字 (莫名js)

var x1,x2 int  

var b,c int = 1, 2 (python!)

未初始化0,"",false

  • 以下几种类型为 nil:

    var a *int
    var a []int
    var a map[string] int
    var a chan int
    var a func(string) int
    var a error // error 是接口
    

格式化符号

%b 一个二进制整数,将一个整数格式转化为二进制的表达方式
%c 一个Unicode的字符
%d 十进制整数
%o 八进制整数
%x 小写的十六进制数值
%X 大写的十六进制数值
%U 一个Unicode表示法表示的整型码值
%s 输出以原生的UTF8字节表示的字符,如果console不支持utf8编码,则会乱码
%t 以true或者false的方式输出布尔值
%v 使用默认格式输出值,或者如果方法存在,则使用类性值的String()方法输出自定义值
%T 输出值的类型 (类似 instance of)

fmt.Printf("%");

2.赋值语句

3.:=

如果变量已经使用 var 声明过了,再使用 := 声明变量,就产生编译错误,格式:
:= 本身就是声明语句
v_name := value
intVal := 1 相等于:

var intVal int 
intVal =1 

// 这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 v_type1
    vname2 v_type2
)

//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"

交换两个数
a,b=b,a

4. 常量

1.const

const b string = "123"

//用于枚举
const (
  age = 12 
  xxx
)
  • 内置的Println()/Print()函数都是标准错误输出,而fmt.Println()函数是标准输出
  • 内置的Println()/Print()函数输出结果可能与预期结果顺序不一致,而fmt.Println()函数输出结果与预期结果完全一致。(这个特性是由标准错误输出和标准输出决定)
  • 内置Println()/Print()函数不能接受数组和结构体类型的数据
  • 内置Println()/Print()函数对于组合类型的数据输出的结果是参数值的地址,而fmt.Println()函数输出的是字面量

2.特殊常量iota(枚举? 0开始)

iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

const (
a = iota //0
b = iota //1
c = iota //2
)

func main() {
fmt.Print(c)
}
=================
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
//const 用于枚举,下一个如果没有初始化就与上面一致
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}

===============
const (
i=1

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论