0.Go的安装和基本语法

0.安装

0.1.下载安装包

https://golang.google.cn/dl/
linux下载go1.Xxx.Yyy.linux-amd64.tar.gz版本安装包

0.2.解压

tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz

0.3.安装

修改/etc/profile文件, 添加一行

export PATH=$PATH:/usr/local/go/bin

或者修改~/.bash_profile文件也是可以的

刷新资源文件

source /etc/profile

1.基本入门

package main
import "fmt"func main() {fmt.Println("Hello World, Go!")
}

main方法为项目的起始方法

2.简单语法

2.1.init方法

package main
import "fmt"func init() {fmt.Println("Init~~")
}func main() {fmt.Println("Hello World, Go!")
}

打印结果:

Init~~
Hello World, Go!

init方法优先于main方法执行。

2.2.字符串

2.2.1.字符串打印

func test1() {fmt.Println("test1--->", "Hello, World!")
}

2.2.2.字符串和数字拼接

func test3() {var a string = "123456"d := fmt.Sprint(a, 54321)fmt.Println("test3--->", d)
}

2.3.多变量赋值

2.3.1.成员变量

var e , f = 1, "321"func test4() {fmt.Println("test4--->", e, f)
}

2.3.2.局部变量

func test5() {g, h := 3, "333"fmt.Println("test5--->", g, h)
}

2.4.常量

func test6() {const i = 100fmt.Println("test6--->", i)
}

2.5.基本运算

func test7() {j := 15k := 10fmt.Println("test7(+)--->", j + k)fmt.Println("test7(-)--->", j - k)fmt.Println("test7(*)--->", j * k)fmt.Println("test7(/)--->", j / k)fmt.Println("test7(%)--->", j % k)j++fmt.Println("test7(++)--->", j)k--fmt.Println("test7(--)--->", k)
}

2.6.判断相等

func test8() {m := 10n := 10o := 11if (m == n) {fmt.Println("test8--->", "等于")}if (m != o) {fmt.Println("test8--->", "不等于")}
}

2.7.或与判断

func test9() {p := trueq := falseif (p && q) {fmt.Println("test9--->", "and true")} else {fmt.Println("test9--->", "and false")}if (p || q) {fmt.Println("test9--->", "or true")} else {fmt.Println("test9--->", "or false")}if (!(p || q)) {fmt.Println("test9--->", "not true")} else {fmt.Println("test9--->", "not false")}
}

2.8.数据类型

2.8.1.类型判断

func test10() {r := 10s := "test"t := truefmt.Printf("test10--->r type:%T\n", r)fmt.Printf("test10--->s type:%T\n", s)fmt.Printf("test10--->t type:%T\n", t)
}

结果:

test10--->r type:int
test10--->s type:string
test10--->t type:bool

2.8.2.类型转换

2.8.2.1.数字类型之间转换
func test37() {var a int = 100var b int = 13var c float32 = float32(a) / float32(b)fmt.Printf("c is %f, type is %T\n", c, c)var d float64 = float64(a) / float64(b)fmt.Printf("d is %f, type is %T\n", d, d)
}

结果:

c is 7.692307, type is float32
d is 7.692308, type is float64
2.8.2.2.字符串转换数字
func test37() {var e string = "20"var f intf, _ = strconv.Atoi(e)fmt.Printf("f is %d, type is %T\n", f, f)
}

结果:

f is 20, type is int
2.8.2.3.数字转字符串
func test37() {g := 132var h string = strconv.Itoa(g)fmt.Printf("h is %s, type is %T\n", h, h)
}

结果:

h is 132, type is string
2.8.2.4.字符串转为浮点型
func test37() {i := "3.1415926"j, err := strconv.ParseFloat(i, 64)if err != nil {fmt.Println("parse string to float error, ", err)} else {fmt.Printf("j is %f, type is %T\n", j, j)}
}

结果:

j is 3.141593, type is float64

3.语句

3.1.if…else语句

func test11() {u := 80if u >= 90 {fmt.Println("你的成绩为优秀")} else if u >= 80 {fmt.Println("你的成绩为良")} else if u >= 70 {fmt.Println("你的成绩为一般")} else if u >= 60 {fmt.Println("你的成绩为及格")} else {fmt.Println("你的成绩为不及格")}
}

3.2.switch语句

3.2.1.switch语句常规使用

func test12() {v := 30switch v {case 10:fmt.Println("1--->你的成绩为10")case 20:fmt.Println("1--->你的成绩为20")case 30:fmt.Println("1--->你的成绩为30")}w := 100switch {case v == 20, w == 100: // 或的关系fmt.Println("2--->你的成绩为20, 100")case v == 30, w == 100: // 或的关系fmt.Println("2--->你的成绩为30, 100")}switch {case v == 20 && w == 100: // 并且的关系fmt.Println("3--->你的成绩为20, 100")case v == 30 && w == 100: // 并且的关系fmt.Println("3--->你的成绩为30, 100")}var x interface{}switch x.(type) {case int:fmt.Println("x 是 int 型")case float64:fmt.Println("x 是 float64 型")case func(int) float64:fmt.Println("x 是 func(int) 型")case bool, string:fmt.Println("x 是 bool 或 string 型")default:fmt.Println("未知型")}
}

结果:

1--->你的成绩为30
2--->你的成绩为20, 100
3--->你的成绩为30, 100
未知型

3.2.2.fallthrough语句

强制执行下一个case

func test12() {switch {case false:fmt.Println("test 1")fallthroughcase true:fmt.Println("test 2")fallthroughcase false:fmt.Println("test 3")fallthroughcase true:fmt.Println("test 4")case false:fmt.Println("test 5")}
}

结果:

test 2
test 3
test 4

3.3.select语句

package mainimport ("fmt""time"
)func main() {test13()
}func test13() {test1 := make(chan string)test2 := make(chan string)go func() {time.Sleep(1 * time.Second)test1 <- "one"}()go func() {time.Sleep(2 * time.Second)test2 <- "two"}()for i := 0; i < 2; i++ {select {case m1 := <-test1:fmt.Println("print", m1)case m2 := <-test2:fmt.Println("print", m2)default:fmt.Println("no data...")}}
}

结果:

print one
print two

3.4.循环语句

3.4.1.for语句

func test14() {for i := 0; i < 5; i++ {if i == 5 {continue} else if i == 8 {break}println(fmt.Sprint("num-", i))}
}

结果:

num-0
num-1
num-2
num-3
num-4
num-6
num-7

3.4.2.goto跳转制定代码

func test15() {var a int = 10var b bool = falselabel:if b {fmt.Println("---aaa---")}for a < 20 {if a == 15 {a = a + 1b = truegoto label //跳转到制定代码快}fmt.Printf("a的值为 : %d\n", a)a++}
}

结果:

a‘s alue is : 10
a‘s alue is : 11
a‘s alue is : 12
a‘s alue is : 13
a‘s alue is : 14
---aaa---
a‘s alue is : 16
a‘s alue is : 17
a‘s alue is : 18
a‘s alue is : 19

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 怎么将dict字典转换成json文件保存

文章目录 Python 怎么将dict字典转换成json文件保存1. json.dump&#xff08;&#xff09;2. with open("要打开的文件路径/保存的地址file_name", "w") as outfiles: Python 怎么将dict字典转换成json文件保存 1. json.dump&#xff08;&#xff09; 公…

C++设计模式:原型模式(八)

1、定义与动机 定义&#xff1a;使用原型实例指定创建对象的种类&#xff0c;然后通过拷贝这些原型来创建新的对象。 动机&#xff1a; 在软件系统中&#xff0c;经常面临着“某些结构复杂的对象”的创建工作&#xff1b;由于需求的变化&#xff0c;这些对象经常面临着剧烈的变…

BUUCTF刷题十一道(12)附-SSTI专题二

文章目录 学习文章[CISCN2019 华东南赛区]Web11【存疑】[RootersCTF2019]I_<3_Flask 学习文章 SSTI-服务端模板注入漏洞 flask之ssti模板注入从零到入门 CTFSHOW SSTI篇-yu22x SSTI模板注入绕过&#xff08;进阶篇&#xff09;-yu22x SSTI模板注入学习-竹言笙熙 全部总结看最…

Chatgpt掘金之旅—有爱AI商业实战篇|在线辅导业务|(十一)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业在线辅导业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随着…

谷歌浏览器快捷键, VScode 快捷键

谷歌浏览器快捷键 谷歌浏览器跳转标签页的方式&#xff1a; control Tab 跳转下一个标签页 control shift tab 上一个标签页 command 1-8 跳转对应的标签页&#xff0c;而command 9 则是跳转最后一个标签页 Previous Tab 插件实现谷歌浏览器两个tab页来回切换。快捷键为…

稀碎从零算法笔记Day44-LeetCode:整数转罗马数字

题型&#xff1a;贪心、模拟 链接&#xff1a; 12. 整数转罗马数字 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 …

网络名称空间在Linux虚拟化技术中的位置

网络名称空间&#xff08;Network Namespaces&#xff09;是Linux内核特性之一&#xff0c;提供了隔离网络环境的能力&#xff0c;使得每个网络名称空间都拥有独立的网络设备、IP地址、路由表、端口号范围以及iptables规则等。这一特性在Linux虚拟化技术中占据了核心位置&#…

上海计算机学会 2023年6月月赛 乙组T1 两数归零(STL、map)

第一题&#xff1a;T1两数归零 标签&#xff1a; S T L 、 m a p STL、map STL、map 题意&#xff1a;给定 n n n个整数 a 1 , a 2 , a 3 , . . . , a n a_1,a_2,a_3,...,a_n a1​,a2​,a3​,...,an​&#xff0c;请统计有多少二元组 i , j i,\ j i, j满足 i < j i < j …

天池医疗AI大赛[第一季] Rank5解决方案

一、赛题说明 数据格式 本次大赛数据集包含数千份高危患者的低剂量肺部CT影像&#xff08;mhd格式&#xff09;数据&#xff0c;每个影像包含一系列胸腔的多个轴向切片。每个影像包含的切片数量会随着扫描机器、扫描层厚和患者的不同而有差异。原始图像为三维图像。这个三维图…

Win10系统下的EDGE浏览器启用IE模式

Win10系统下的EDGE浏览器目前已弃用IE内核&#xff0c;这样在访问某些较老的网站会有兼容性问题&#xff0c;本文记录了在EDGE浏览器中启用IE模式的操作方法。 一、启用EDGE浏览器的IE模式 要打开Internet Explorer模式&#xff0c;执行以下步骤: 1、在Microsoft Edge的地址栏…

TryHackMe - HTTP Request Smuggling

学完、打完后的复习 HTTP 1 这部分比较简单&#xff0c;直接略过 HTTP2请求走私 首先要了解HTTP2的结构&#xff0c;与HTTP1之间的一些差异 HTTP2中不再使用CRLF来作为字段的边界限定&#xff0c;而是在二进制中直接通过长度、名字、值长度、值&#xff0c;来确认边界 而这…

数据仓库的概念和作用?如何搭建数据仓库?

随着企业规模的扩大和数据量的爆炸性增长&#xff0c;有效管理和分析海量数据成为企业数字化转型的关键。而在互联网的普及过程中&#xff0c;信息技术已深入渗透各行业&#xff0c;逐渐融入企业的日常运营。然而&#xff0c;企业在信息化建设中面临了一系列困境和挑战&#xf…

微信小程序第六次课(模块化和绑定事件)

模块化 1.首先 我们在utils里面创建一个新的js文件 2.新的js文件里面写我们要实现的函数功能 3.把新的函数功能 通过 module.export.对外公开文件名 新文件名 的方式把之前的函数公开到其他他模块 &#xff08;类似于public 让别的模块可以…

https的配置和使用(以腾讯云为例)

1、注册域名 2、获取证书 3、下载证书 下载下来的证书所有格式 4、在服务器上下载nginx并配置 nginx的配置文件 如下 server {listen 80;listen 443 ssl;server_name delegate.letspiu.net.cn;ssl on; #开启ssl#指定证书位置ssl_certificate /etc/ss…

JRT判断数据是否存在优化

有一种业务情况类似下图&#xff0c;质控能做的项目是仪器关联的项目。这时候维护质控物时候开通项目时候要求加载仪器项目里面的项目&#xff08;没有开通的子业务数据的部分&#xff09;。对右边已经开通的部分要求加载仪器项目里面的项目&#xff08;有开通业务子数据的部分…

Python从0到100(十二):函数的定义及模块

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

DockerFile定制镜像

dockerfile 简介 Dockerfile 是⼀个⽤来构建镜像的⽂本⽂件&#xff0c;⽂本内容包含了⼀条条构建镜像所需的指令和 说明&#xff0c;每条指令构建⼀层&#xff0c;最终构建出⼀个新的镜像。 docker镜像的本质是⼀个分层的⽂件系统 centos的iso镜像⽂件是包含bootfs和rootfs…

SQL注入sqli_libs靶场第一题

第一题 联合查询 1&#xff09;思路&#xff1a; 有回显值 1.判断有无注入点 2.猜解列名数量 3.判断回显点 4.利用注入点进行信息收集 爆用户权限&#xff0c;爆库&#xff0c;爆版本号 爆表&#xff0c;爆列&#xff0c;爆账号密码 2&#xff09;解题过程&#xff1…

GitHub 仓库 (repository) Pulse - Contributors - Network

GitHub 仓库 [repository] Pulse - Contributors - Network 1. Pulse2. Contributors3. NetworkReferences 1. Pulse 显示该仓库最近的活动信息。该仓库中的软件是无人问津&#xff0c;还是在火热地开发之中&#xff0c;从这里可以一目了然。 2. Contributors 显示对该仓库进…

easyExcel - 动态复杂表头的编写

目录 前言一、情景介绍二、问题分析三、代码实现方式一&#xff1a;head 设置方式二&#xff1a;模板导出方式三&#xff1a;自定义工具类 前言 Java-easyExcel入门教程&#xff1a;https://blog.csdn.net/xhmico/article/details/134714025 之前有介绍过如何使用 easyExcel&…