go语言基础实例
一:变量
1)变量声明
func main() {
var v1 int
var v2 int
//一次声明多个变量
var (
v3 int
v4 int
)
//变量最开始会有一个零值
fmt.Println(v1,v2,v3,v4)
}
打印效果:
2)变量初始化
package main import (
"fmt"
"reflect"
)
func main(){
//1 直接初始化并指定数据类型
var v1 int =
//2 直接初始化
var v2 =
//3 := 声明变量及初始化
v3 :=
//利用反射,查看v的类型
fmt.Println("v3类型是:",reflect.TypeOf(v3))
fmt.Println(v1,v2)
}
运行效果:
3)变量赋值
package main import "fmt"
func main() {
//直接赋值
var v1 int
v1 =
//2 声明变量并赋值
i :=
//3多重赋值
var v2,v3,v4 int
v2,v3,v4=,,
fmt.Println(v1,v2,v3,v4,i)
}
运行效果:
4)匿名变量 (注:_ 代表特殊的变量名,作用是占位)
import "fmt" //(int,string) 指的是返回值类型
func test() (int,string){
return ,"够浪"
}
//调用函数
func main(){
_,s :=test() //_ 表示占位 所以打印结果只有一个参数
fmt.Println(s)
}
运行效果
二:常量与枚举
1)声明常量
package main import "fmt"
//声明常量
const filename = "abc.txt"
func consts() {
const (
filename = "abc.txt"
a,b = ,
)
//究竟原则
fmt.Println(filename)
}
func main() {
consts() }
2) iota 常量生成器
package main import "fmt" func enums2(){
const (
python =iota
golang
java
)
fmt.Println(python,golang,java)
}
func main(){
enums2()
}
运行效果
iota参与运算(位运算原理:参考https://studygolang.com/articles/6657)
package main import "fmt" func enmus3(){
const (
//位运算
b = <<(*iota)
kb
mb
gb
tb
pb
)
fmt.Println(b,kb,mb,gb,tb,pb)
}
func main(){
enmus3()
}
3)枚举
package main import "fmt"
//定义枚举类型
func enums() {
const (
python =
golang =
java =
)
fmt.Println(python,golang,java)
} func main() {
enums()
}
三: 基本数据类型
1)整型
package main
import (
"fmt"
"reflect"
)
func main(){
var v1 int32
v1=
v2 :=
fmt.Println(v1,v2)
//默认推算类型是int
fmt.Println(reflect.TypeOf(v2))
}
运行效果
2)浮点型
package main
import (
"fmt"
"reflect"
)
func main(){
var f1 float32
f1 =
f2 := 12.0
fmt.Println(f1)
fmt.Println(reflect.TypeOf(f2))
}
运行效果
3)布尔类型
package main
import (
"fmt"
"reflect"
)
func main(){
var v1 bool
v1 = true
v2 :=(==)
fmt.Println(v1,v2)
fmt.Println(reflect.TypeOf(v2))
}
运行效果
4)byte字符型
package main import "fmt" func main(){
var ch byte
ch='a'
fmt.Println(ch)
fmt.Printf("ch=%c",ch)
}
5)字符串
package main import "fmt" func main(){
var str string
str ="abc"
fmt.Printf(str)
fmt.Println()
str2 := "hello mike \n \r 测试"
fmt.Println(str2)
}
三: fmt 包的使用
1)格式说明
2) 输出
package main
import "fmt"
func main(){
a :=
//%b是二进制
fmt.Printf("a = %b\n" ,a)
//只输出一个%
fmt.Printf("%%\n") //字符串
ch := 'a'
fmt.Printf("ch = %c, %c\n",ch,) //浮点类型
f := 3.14
//%g 紧凑格式
fmt.Printf("f = %f,%.g\n" ,f ,f) str := "hello.go"
fmt.Printf("str=%s\n",str) }
3)输入
package main import "fmt" func main(){
var v int
fmt.Println("请输入数字")
fmt.Scan(&v)
fmt.Println("v = ",v)
}
运行效果
4)类型别名
package main import (
"fmt"
"reflect"
) func main(){
//int类型取个别名
type myint int
var i myint =
fmt.Println(reflect.TypeOf(i))
}
运行效果
5)类型转换
package main import "fmt" func goo() {
var ch byte = 'a'
var i int = int(ch)
fmt.Println(i)
}
func main(){
goo()
}
四:流程控制
1)选择结构 :if else 语句
package main import (
"fmt"
"io/ioutil"
)
//第一种写法
func main(){
const filename ="abc.txt"
//ioutil.ReadFile读文件
contents,err := ioutil.ReadFile(filename)
if err != nil{
fmt.Println(err)
}else {
fmt.Printf("%s\n",contents)
}
//第二种写法
if contents,err :=ioutil.ReadFile(filename);err!=nil{
fmt.Println(err)
}else{
fmt.Printf("%s\n",contents)
} }
2)switch语句
package main import (
"fmt"
) //传入成绩,返回评分等级
func grade(score int) string {
// 定义字符串
g := ""
// go语言switch自动每一句加了break
switch {
case score < || score > :
g = "输入错误"
case score < :
g = "不及格"
fallthrough
case score < :
g = "一般"
case score < :
g = "良好"
case score <= :
g = "优秀"
default:
g="XXX"
}
return g
} func main() {
fmt.Println(
grade(),
grade(),
grade(),
grade(),
grade(),
grade(),
grade(-),
)
}
2) 循环结果
package main import (
"fmt"
"time"
)
//死循环
func for1(){
for {
fmt.Println("日耳曼战车凉凉")
//睡一秒
time.Sleep(*time.Second)
}
}
func main() {
for1()
}
package main import (
"fmt"
"time"
)
//打印10次
func for2(){
for i :=; i<;i++{
fmt.Println("日耳曼战车凉凉",)
//睡500毫秒
time.Sleep(*time.Millisecond)
}
}
func main(){
for2()
}
package main import (
"fmt"
"time"
) func for3(){
for i :=;i<;i++{
if i%=={
fmt.Println("爱阿根廷")
}else if i% == {
fmt.Println("爱战车")
}else{
fmt.Println("更爱天台")
}
time.Sleep(*time.Millisecond)
}
}
func main(){
for3()
}
4)range(r然哥)
package main import "fmt" func main(){
s := "abc"
//接收下标,通过下标取值
for i :=range s{
fmt.Printf("下标=%d,值=%c\n",i,s[i])
}
//直接都接收到
for i,c := range s{
fmt.Printf("下标=%d,值=%c\n",i,c)
} for _,c :=range s {
fmt.Printf("值=%c\n",c)
} }
5)跳转语句(break和continue)
package main import "fmt" func main(){
for i :=;i<;i++{
if i=={
//break 终止并退出循环
continue //终止本次循环进入下次循环
}
fmt.Println(i)
}
}
goto
package main import "fmt" func main(){
for i :=;i<;i++{
fmt.Println(i)
//goto必须跳转到方法内
goto LABEL2
}
fmt.Println("程序结束")
LABEL2:
fmt.Println("程序over")
}
go语言基础实例的更多相关文章
- Java实例 Part2:Java语言基础
Part2:Java语言基础 ** Example01:从控制台接收输入字符 ** 运行结果: 实现代码: import java.util.Scanner; public class Example ...
- 【Java初探实例篇01】——Java语言基础
示例系列,将对每节知识辅以实际代码示例,通过代码实际编写,来深入学习和巩固学习的知识点. IDE:intellij IDEA: 语言:Java 本次示例:Java语言基础知识的应用. 创建包day_4 ...
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...
- APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例
前言 继上篇环境篇后,本篇主要对TestNG进行介绍,给出最最基础的两个实例,通过本文后,学会并掌握TestNG测试用例的编写与运行,以及生成美化后的报告.下一篇为HTTP接口实战(国家气象局接口自动 ...
- C语言基础回顾
第一章 C语言基础 1. C语言编译过程 预处理:宏替换.条件编译.头文件包含.特殊符号 编译.优化:翻译并优化成等价的中间代码表示或汇编代码 汇编:生成目标文件,及与源程序等效的目标的机器语言代码 ...
- python基础——实例属性和类属性
python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...
- Java学习总结(二)----Java语言基础
1. Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...
- php面试题之三——PHP语言基础(基础部分)
三.PHP语言基础 1. strlen( )与 mb_strlen( )的作用分别是什么(新浪网技术部) strlen和mb_strlen都是用于获取字符串长度. strlen只针对单字节编码字符,也 ...
- Object Pascal 语言基础
Delphi 是以Object Pascal 语言为基础的可视化开发工具,所以要学好Delphi,首先要掌握的就是Object Pascal 语言.Object Pascal语言是Pascal之父在1 ...
随机推荐
- 剑指 Offer 52. 两个链表的第一个公共节点
题目链接 题目描述: 我的题解: 方法一:双指针法 思路分析: 声明两个指针p1,p2 分别指向链表A.链表B. 然后分别同时逐结点遍历 当 p1 到达链表 headA 的末尾时,重新定位到链表 he ...
- CSMA/CD协议(载波侦听多路访问/碰撞检测) 最小帧长理解
以下的帧长有的是指帧的时间长度,帧的时间长度= 帧长/传输时延
- ios 版本更新提示-硬更新/软更新
实现: 强制更新:每次弹框 非强制更新:一天提示一次 代码如下: 步骤一: 将检测更新写到APPDelegate的applicationDidBecomeActive中 步骤二: 检测是否需要更新 步 ...
- Windows包管理工具-Chocolatey
Chocolatey是一款专为Windows系统开发的.基于NuGet的包管理器工具,类似于Node.js的npm,MacOS的 brew,Ubuntu的 apt-get,简称为 choco. Cho ...
- .NETCore微服务探寻(三) - 远程过程调用(RPC)
前言 一直以来对于.NETCore微服务相关的技术栈都处于一个浅尝辄止的了解阶段,在现实工作中也对于微服务也一直没有使用的业务环境,所以一直也没有整合过一个完整的基于.NETCore技术栈的微服务项目 ...
- List集合遍历时修改元素出现并发修改异常总结
什么是并发修改异常: 当我们在遍历实现了collection接口与iterator接口的集合时(List.Set.Map), 我们可以通过遍历索引也可以通过迭代器进行遍历.在我们使用迭代器进行遍历集合 ...
- 尝试Access数据库注入实验
靶场环境:https://www.mozhe.cn/bug/detail/82 首先http://219.153.49.228:49543/new_list.asp?id=1 order by 4 到 ...
- Integer.valueOf源码分析
1. 引言 在牛客网上看到这样一道题目,判断一下打印的结果 public static void main(String[] args){ Integer i1 = 128; Integer i2 = ...
- Consul服务治理发现学习记录
Consul 简介 Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用.限流.熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便.它提供了一个功 ...
- .NET 跨平台框架Avalonia UI: 填坑指北(一):熟悉UI操作
Avalonia 是一个跨平台的 .NET UI 框架,支持 Windows.Linux.Mac OSX... (以及Android IOS soon..) 本篇主要介绍Avalonia开发过程和L ...