go语言之行--基础部分
<h2 id="autoid-2-0-0">一、数据类型 布尔型布尔类型?- 由两个预定义常量组成: import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() { 数字类型整型:
其他数字类型:
字符串类型表示方式:
区别:使用反引号定义的字符串保留原始字符(如换行n,t等)会对特殊字符进行转义,打印时候原样输出,而双引号则不转义。 字符串底层是一个byte的数组。 字符串本身是不可变的,因此要改变字符串中的字符,需要将字符串转变为数组,修改数组后再将数组转换为字符串: import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() { }<span style="color: #008000;">//<span style="color: #008000;">结果 Wello world 双引号、反引号区别: import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() { 派生类型
类型转换不同的数据类型之间是不允许进行赋值或运算操作,必须经过类型转化才能进行运算或者赋值 转换方法:数据类型() import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() { 二、运算符算数运算符
位运算符位运算符对整数在内存中的二进制位进行操作。
A = <span style="color: #800080;">0011 <span style="color: #800080;">1100<span style="color: #000000;">
B = <span style="color: #800080;">0000 <span style="color: #800080;">1101 -----------------<span style="color: #000000;"> A&B = <span style="color: #800080;">0000 <span style="color: #800080;">1100<span style="color: #000000;"> A|B = <span style="color: #800080;">0011 <span style="color: #800080;">1101<span style="color: #000000;"> A^B = <span style="color: #800080;">0011 <span style="color: #800080;">0001 赋值运算
变量运算符
?三、流程控制if-else condition2 {
}
for一般for循环 i := ; i < ; i++ {
}
死循环(类似python中的while) ?使用range遍历数组、slice、map、chan等 import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() { }<span style="color: #008000;">//<span style="color: #008000;">结果 index=0 val=h len=10 .... import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() { }<span style="color: #008000;">//<span style="color: #008000;">结果 index=0 val=h len=10 .... <h3 id="autoid-4-1-0">switch switch条件控制,当条件匹配当前case时候,执行当前case,不会进行往下执行,若都没有匹配到,则执行default,当然也可以使用fallthrought关键字强制执行下面语句。 import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() { import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() { import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() { ?goto&labellabel作为一个标记,语法是字符串+冒号定义,在循环中使用lable可调至label的定义的位置 import (
<span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">" <span style="color: #800000;">"<span style="color: #800000;">time<span style="color: #800000;">"<span style="color: #000000;"> ) func main() {
<span style="color: #000000;"> } }<span style="color: #008000;"> goto作用在于跳转到label标签定义的地方继续执行。上述代码修改为goto,将是死循环 import (
<span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">" <span style="color: #800000;">"<span style="color: #800000;">time<span style="color: #800000;">"<span style="color: #000000;"> ) func main() {
<span style="color: #000000;"> } }<span style="color: #008000;">//<span style="color: #008000;">结果:每5秒打印1,2,3,4,5 四、函数函数是go语言编程的核心。特点:
函数定义语法: import (
<span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;"> ) func add(a <span style="color: #0000ff;">int,b <span style="color: #0000ff;">int) <span style="color: #0000ff;">int<span style="color: #000000;"> {
}
<span style="color: #000000;"> fmt.Println(d) import (
<span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;"> ) func add(a <span style="color: #0000ff;">int,b <span style="color: #0000ff;">int) (<span style="color: #0000ff;">int,<span style="color: #0000ff;">int<span style="color: #000000;">) {
}
<span style="color: #000000;"> fmt.Println(d) 函数参数传递方式值传递:一般基本的数据类型都是值传递,如数字、字符串。 引用传递:复杂的数据类型,如map、chan、interface,是引用传递。 注意:无论是值传递还是引用传递,传递给函数的都是变量的副本,不过值传递是值的拷贝,引用传递拷贝的是地址,一般来说地址拷贝更为高效。而值拷贝取决于拷贝对象大小,对象越大,则性能相对低。 函数返回值命名go 函数的返回值或者结果参数可以指定一个名字(名字不是强制的),并且像原始的变量那样使用,就像输入参数那样。如果对其命名,在函数开始时,它们会用其类型的零值初始化;如果函数在不加参数的情况下执行了? import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"
<span style="color: #008000;">//<span style="color: #008000;">斐波那契数列实现 func Factorial(x <span style="color: #0000ff;">int) (result <span style="color: #0000ff;">int) { <span style="color: #008000;">//<span style="color: #008000;">给函数返回值命名为result <span style="color: #0000ff;">if x <= <span style="color: #800080;">1<span style="color: #000000;"> { result = <span style="color: #800080;">1<span style="color: #000000;"> } <span style="color: #0000ff;">else<span style="color: #000000;"> { result =Factorial(x - <span style="color: #800080;">2) + Factorial(x - <span style="color: #800080;">1<span style="color: #000000;">) }
} 匿名函数匿名函数(对比javascript)即没有函数名的函数,只能放在函数中,可以实现函数嵌套定义的功能。 import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() { 函数的可变参数go语言中,也可以像python一样传递可变参数(意思是传递时候才确定有几个参数,定义时候不知道参数个数),可以认为参数是数组形式: func funcname(arg...type) { }
import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func add(a <span style="color: #0000ff;">int,arg...<span style="color: #0000ff;">int) <span style="color: #0000ff;">int<span style="color: #000000;"> { 当函数中存在defer关键字时候,一旦函数返回则执行defer语句,因此,defer可以做一些资源清理的事情。 特性:
import <span style="color: #800000;">"<span style="color: #800000;">fmt<span style="color: #800000;">"<span style="color: #000000;">
func main() {
命令行参数概念:
来自命令行的参数在程序中通过
test.exe
?初始化顺序规则: 引入的包 -->包中的常量、变量、init-->当前包的常量、变量、init -->main函数 图示: 注意事项:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |