Go语言的学习之旅【二】

一、语言结构

1
2
3
4
5
6
//这个package是包声明(类似声明变量)//mian是被声明的包名(取main是go程序是可独立执行程序!!!)//文件命名不需要一致,例如test.go文件含有package main也可以当作可独立执行程序package main //fmt是这个程序引入的包,可以调用fmt的公共函数
import "fmt"//优先于mian的执行函数func init(){  fmt.Println("pre main exec init")}
//可执行程序必须包含这个,基本启动会执行mian(),不过init()会比它提前执行
func main() {  //调用fmt包中的Println函数,首字母是大写表示公共函数,若是小写,则只能为私有函数
   fmt.Println("Hello, World!")
}

 

复制代码
//下列的文件结构
project
--test.go
mydir
--mydir.go
--mydir2.go
//以上的结构,mydir中package命名要相同
mydir.go的内容
package mydir
func MyFunc()(int){
  return 1;
}
mydir2.go的内容
package mydir //这个package要跟mydir.go中命名相同,否则会编译错误
func MyFunc2()(int){
  return 2;
}
复制代码

发现go的src文件夹下,fmt的文件夹下存在package fmt跟package fmt_test(表示暂时不太懂)

二、语法

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//1、行分隔符,可以使用;分号来进行分割(不推荐)
fmt.Println('Hello,world!");fmt.Println("hello,world!")
//直接换行分割
fmt.Println('Hello,world!")
fmt.Println("hello,world!")
//2、注释
// 单行注释
/*
     多行注释
 */
//3、标时符
一个标识符实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列
例如:_abc, abc,abc123,a_13等
不正确的标识符:
1abc (数字不能第一位)
casego关键字不能用)
a+b(运算符不能用)
$abc(特殊字符也不可以)
...<br><br>

 

三、数据类型

  布尔型:bool

  整数型:int,int8,int16,int32,int64,uint8,uint16.uint32,uint64,uintptr(指针)

  浮点型:float32,float64,complex64,complex128

  其他:byte(与uint8类似),rune(与int32类似)

四、变量

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
 var a int = 1
var b string = "欢迎来到go世界"
c := false // `:=` 这个是var c bool 声明+赋值
var d = 10 // var d 自适应声明赋值
var e bool //声明(不赋值,必须带上类型)
fmt.Println(a+d,"\n",b,c,d,e)   //使用`+`号必须是相同的类型(
var v1 = 1
v1,v2 := 1,2 //使用`:=` 时必须有一个没被声明过的变量(这个写法...)
var(
    f int
    g bool
)
fmt.Print(f,g,v1,v2)//所有的变量都要被使用到,不然会报错(完全赞同,有时候经常弄个变量,最后没用了,都忘了删)
var z,x int = 1,2 //多个变量同类型声明赋值
var n,m = false,"ok" //多个变量不同类型声明赋值
fmt.Println(z,x,n,m)
var(
    //i  这个批量声明赋值,不能不定义类型
    j bool
    k string = "adfsf"
    l = false
)
fmt.Println(j,k,l,&z) //&z 取到这个z变量在内存中的地址类似c语言
_,o,p := numbers() // `_` 空白变量,不能被使用,可以理解第一个返回值默认丢弃
fmt.Println(o,p)

 五、总结

  语言结构,语法,数据类型,变量都跟其他语言差不多,包都定义有点特别,main命名作为独立可执行程序,同一个文件夹下package名要相同,否则会报错,按照文件夹来进行模块区分。

语法中变量的定义格式相比java要少很多,数据类型变了下,int32类似带位数来表示大小,更加直观,还保留c的指针模式。

总体还是挺容易理解,并没有特别特立独行都存在,大多数都是为了减少代码开发。继续探索,gogogo!

posted @   Auler  阅读(88)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
历史上的今天:
2017-11-30 centos服务器搭建javaweb项目步骤
点击右上角即可分享
微信分享提示