package main
import (
"fmt"
"math"
"reflect"
"unsafe"
)
type Book struct{
ID int
title string
content string
author string
}
var(//因式分解关键字用于声明全局变量,全局变量允许声明但不使用
r int
s int
t int
e int
)
const(
const1="22aaaa"
const2=len(const1)
const3=unsafe.Sizeof(const1)
const4
)
const(
//特殊常量
iota1=iota
iota2
iota3
)
const(
iota4 =1<<iota
iota5=4<<iota
iota6
iota7
iota8="111"
iota9
iota10=iota
iota11
iota12
iota13
iota14=111
iota15
iota16
)
const MAX int=3
var (
num10 int
num11 int
num12 *int
num13 float32
)
func max(num1 int,num2 int) int{
if num1<num2{
return num2;
}
return num1;
}
func main() {
//非全局变量不允许声明后不使用
fmt.Println("Hello,world!");
fmt.Print("Hello,world!\n");
var age int;
age=1+3;
fmt.Println(age);
var a bool;
fmt.Println(a);
fmt.Println("Type:",reflect.TypeOf(a))
var b int8;
//int8 8位 -128-127
//b=127;
b=-128
fmt.Println(b)
fmt.Println("Type:",reflect.TypeOf(b))
var c float32;
c=1.1111;
fmt.Println(c)
fmt.Println("Type:",reflect.TypeOf(c))
var d complex64;
//复数a+bi,一定是i
d=1+2i;
fmt.Println(d)
var e byte;
fmt.Println(e)
var f rune;
fmt.Println(f)
var g uint;
g=1;
fmt.Println(g)
var h uintptr;
h=1;
fmt.Println(h)
var i string;
i="I'm 字符串"
fmt.Println(i)
var j=10;
//判断变量类型
fmt.Println("Type:",reflect.TypeOf(j))
k:=123.3333
fmt.Println("k Type:",reflect.TypeOf(k))
l,m,n:=12,"22222",false
fmt.Println("l Type:",reflect.TypeOf(l),"m Type:",reflect.TypeOf(m),"n Type:",reflect.TypeOf(n));
var o,p,q=1,2,3
_=o
_=p
_=q
fmt.Println(o,p,q)
r=11
fmt.Println(r,s,t)
fmt.Println("i的地址:",&i)
var r1,r2=1,1
r1=r2
fmt.Println("&r1:",&r1,r1,"&r2:",&r2,r2)
r2=3
fmt.Println("r1:",r1,"r2:",r2)
var str1,str2="111","2222";
str1=str2
fmt.Println("&str1:",&str1,str1,"&str2:",&str2,str2)
const a1,a2,a3=1,2,3
fmt.Println(a1,a2,a3)
const a4=0;
fmt.Println(a4)
fmt.Println(const1,const2,const3,const4)
fmt.Println(iota1,iota2,iota3)
fmt.Println(iota4,iota5,iota6,iota7,iota8,iota9,iota10,iota11,iota12,iota13,iota14,iota15,iota16)
fmt.Println("a1:",a1,"a2",a2)
var c2=a1+a2
fmt.Println(c2)
c2=a1-a2
fmt.Println(c2)
c2=a1*a2
fmt.Println(c2)
c2=a1/a2
fmt.Println(c2)
fmt.Println("a1>a2?",a1>a2)
fmt.Println("a1>=a2?",a1>=a2)
fmt.Println("a1<a2?",a1<a2)
fmt.Println("a1<=a2?",a1<=a2)
fmt.Println("a1==a2?",a1==a2)
fmt.Println("a1!=a2?",a1!=a2)
fmt.Println("a1&a2?",a1&a2)
fmt.Println("a1|a2?",a1|a2)
fmt.Println("!(a1<a2)",!(a1<a2))
fmt.Println("a^b",a1^a2)
bool1,bool2:=true,false;
fmt.Println((bool1&&bool2));
fmt.Println(bool1||bool2)
fmt.Println(!bool1&&bool2)
fmt.Println(a1)
b3,b4:=1,2
b3=b4
fmt.Println("b3:",b3,"b4:",b4)
b3+=b4
fmt.Println("b3:",b3,"b4:",b4)
b3-=b4
fmt.Println("b3:",b3,"b4:",b4)
b3*=b4
fmt.Println("b3:",b3,"b4:",b4)
b3/=b4
fmt.Println("b3:",b3,"b4:",b4)
var b5 uint;
var b6 uint;
b5=10
b6=11
b5<<=b6
fmt.Println("b5:",b5,"b6:",b6)
b5>>=b6
fmt.Println("b5:",b5,"b6:",b6)
b5&=b6
fmt.Println("b5:",b5,"b6:",b6)
b5|=b6
fmt.Println("b5:",b5,"b6:",b6)
b5^=b6
fmt.Println("b5:",b5,"b6:",b6)
var c1 int;
var ptr *int;
fmt.Println("&c1:",&c1,"ptr:",ptr)
ptr=&c1;
//ptr是c1的地址
c1=123
fmt.Println("&c1:",&c1,"ptr:",ptr,"*ptr",*ptr)
a5,a6:=9.4,5.34
if a5<a6{
fmt.Println("a5小于a6")
}else if a5==a6{
fmt.Println("a5等于a6")
}else{
fmt.Println("a5大于a6")
}
var a7 int;
for a7=0;a7<10;a7++{
fmt.Println("a7:",a7)
}
var a9=10
for a7<a9{
a7++
fmt.Println("a7:",a7)
}
nums:=[6]int{1,2,4,5}
for i1,num:=range nums{
fmt.Printf("第%d个值为%d\n",i1,num)
}
fmt.Println("max(4,5):",max(4,5))
fmt.Println("min(4,5):",min(4,5))
var num1 =10
var num2 =13
fmt.Print("交换值前:num1:",num1,"num2:",num2,"\n")
swap1(num1,num2)
fmt.Print("交换值前num1:",num1,"num2:",num2,"\n")
var num3 *int
var num4 *int
num3=&num1
num4=&num2
fmt.Print("交换地址后:num3:",*num3,"num4:",*num4,"\n")
swap2(num3,num4)
fmt.Print("交换地址后:num3:",*num3,"num4:",*num4,"\n")
var num5,num6=130,240
fmt.Println("num5:",num5,"num6:", num6);
num5,num6=swap4(num5,num6)
fmt.Println("num5:",num5,"num6:", num6);
//函数作为值
getSqrtRoot:=func(x1 float64) float64{
return math.Sqrt(x1);
}
fmt.Println(getSqrtRoot(6))
plusTwoNum:=func(num1 int,num2 int) (int){
return num1+ num2;
}
fmt.Println(plusTwoNum(12,3333))
num11+=1
num12=&num11
fmt.Println(num11,*num12,num13)
var array11 [10]int
var i2 int
for i2=0;i2<10;i2++{
array11[i2]=i2
fmt.Println(array11[i2])
}
var array12 =[10]int{1,2,3}
for i2=0;i2<10;i2++{
fmt.Println(array12[i2])
}
var array13 [10][11]int
var j2 int
for i2=0;i2<10;i2++{
for j2=0;j2<11;j2++{
array13[i2][j2]=i2*j2
fmt.Print(array13[i2][j2]," ")
}
fmt.Println()
}
var a14=[3][4]int{{1,2,3,4},{0,1,2,4},{-1,-2,-3,-4}}
for i2=0;i2< len(a14);i2++{
for j2=0;j2< len(a14[i2]);j2++{
fmt.Print(a14[i2][j2]," ")
}
fmt.Println()
}
//三维数组
var a15=[3][4][5]int{{{1,2,3,4,5},{2,3,4,4,6},{6,7,8,9,0},{11,23,34,5,66}},{{1,2,3,4,5},{2,3,4,4,6},{6,7,8,9,0},{11,23,34,5,66}},{{1,2,3,4,5},{2,3,4,4,6},{6,7,8,9,0},{11,23,34,5,66}}}
var k2 int
for i2=0;i2< len(a15);i2++{
for j2=0;j2< len(a15[i2]);j2++{
for k2=0;k2< len(a15[i2][j2]);k2++{
fmt.Print(a15[i2][j2][k2]," ")
}
fmt.Println()
}
fmt.Println()
}
var p1 *int
var p3 *float32
if p1!=nil{
fmt.Println("p1不为空")
}else{
fmt.Println("p1为空")
}
if(p3!=nil){
fmt.Println("p3不为空")
} else{
fmt.Println("p3为空")
}
p1=&i2
var float1 float32=13.4
p3=&float1
if p1!=nil{
fmt.Println("p1不为空,p1=",p1,"*p1=",*p1)
}else{
fmt.Println("p1为空")
}
if p3!=nil{
fmt.Println("p3不为空,p3=",p3,"*p3=",*p3)
}else{
fmt.Println("p3为空")
}
a16:=[]int{12,13,14}
var ptr2 [MAX] *int
for i2=0;i2<MAX;i2++{
ptr2[i2]=&a16[i2]
}
for i2=0;i2< len(ptr2);i2++{
//fmt.Println(*ptr2[i2])
fmt.Printf("a16[%d]:%d\n",i2,*ptr2[i2])
}
var ptr5 *int
ptr5=&i2
fmt.Println(*ptr5)
var ptr55 **int
ptr55=&ptr5
fmt.Println(**ptr55)
var book1 Book
book1.ID=1
book1.content="12222"
book1.title="Python"
book1.author="aaa"
fmt.Println("ID:",book1.ID," content:",book1.content," author:",book1.author," title:",book1.title)
var book [10]Book
for i2=0;i2<10;i2++{
book[i2].ID=i2
book[i2].author="author"
book[i2].title="title"
book[i2].content="content"
}
fmt.Println(book)
for i2=0;i2< len(book);i2++{
fmt.Println("ID:",book[i2].ID," content:",book[i2].content," author:",book[i2].author," title:",book[i2].title)
}
printBook(book1)
printBook2(&book1)
var slice0 []int
if slice0==nil{
fmt.Println("切片slice0是空的")
fmt.Println("slice0:")
printSlice(slice0)
}
var slice1=make([]int,5)
for i2=0;i2< len(slice1);i2++{
slice1[i2]=i2
}
// slice1:=[]int{1,2,3,4,5}
fmt.Println("slice1:")
//打印切片
printSlice(slice1)
//截取1-4
fmt.Println("截取1-4,不包括4")
printSlice(slice1[1:4])
fmt.Print("截取0-5,不包括5\n")
printSlice(slice1[0:5])
/*fmt.Println("截取0-7")
printSlice(slice1[0:7])*/
fmt.Println("截取4之前的")
printSlice(slice1[:4])
fmt.Println("截取1之后的")
printSlice(slice1[1:])
var slice2 []int
printSlice(slice2)
//追加空切片
slice2=append(slice2,0)
printSlice(slice2)
//加一个元素
slice2=append(slice2,1)
printSlice(slice2)
//加多个元素
slice2=append(slice2,2,3,4,5,6,7,8)
printSlice(slice2)
//把slice3的容量扩充到slice2的两倍
slice3:=make([]int,len(slice2),cap(slice2)*2)
//把slice2的内容拷贝到slice3中
copy(slice3,slice2)
printSlice(slice3)
//go语言range
//求切片的和
slice4:=[]int{1,2,3,4,5,6,7}
sum:=0
for _,s1:=range slice4{
sum+=s1
}
fmt.Println("slice4的和为:",sum)
for i2,s2:=range slice2{
fmt.Printf("slice4[%d]=%d\n",i2,s2)
}
//range显示map键值对
kvs1:=map[string]string{"a":"apple","b":"banana"}
for k1,v1:=range kvs1{
fmt.Println("k1:",k1," v1:",v1)
}
//range枚举unicode字符串
for i2,c1:=range "Goto学习"{
fmt.Println(i2,c1)
}
}
func printSlice(x []int){
fmt.Printf("len=%d,cap=%d,slice=%d\n", len(x), cap(x),x)
}
func printBook(book1 Book) {
fmt.Println("ID:",book1.ID," content:",book1.content," author:",book1.author," title:",book1.title)
}
func printBook2(book1 *Book){
fmt.Println("ID:",book1.ID," content:",book1.content," author:",book1.author," title:",book1.title)
}
func min(num1 int,num2 int) int{
if(num1>=num2){
return num2
}
return num1
}
func swap1(num1 int,num2 int){
t=num1
num1=num2
num2=t
fmt.Print("交换值:num1:",num1,"num2:",num2,"\n")
}
func swap2(num3 *int,num4 *int){
t=*num3
*num3=*num4
*num4=t
//fmt.Print("&num3:",num3,"&num4:",num4)
fmt.Print("交换地址:num3:",*num3,"num4:",*num4,"\n")
}
//函数返回多个值
func swap4(num5 int,num6 int) (int,int){
t=num5
num5=num6
num6=t
return num5,num6
}
Go语言基础(一)
最新推荐文章于 2023-07-06 09:48:35 发布