当前位置: 首页 > news >正文

第二章:基础语法

第二章:基础语法

2.1 变量声明

显式声明

packagemainimport"fmt"funcmain(){// 方式1:var关键字声明varnamestring="张三"varageint=25varheightfloat64=1.75varisStudentbool=truefmt.Printf("姓名: %s, 年龄: %d, 身高: %.2f, 是否学生: %v\n",name,age,height,isStudent)// 方式2:类型推断varcity="北京"// 自动推断为stringvarpopulation=2100// 自动推断为intfmt.Printf("城市: %s, 人口: %d万\n",city,population)// 方式3:批量声明var(firstNamestring="小"lastNamestring="明"scoreint=95)fmt.Printf("全名: %s%s, 分数: %d\n",firstName,lastName,score)}

短变量声明(:=)

packagemainimport"fmt"funcmain(){// 短变量声明,只能在函数内部使用name:="李四"age:=30salary:=15000.50isMarried:=falsefmt.Printf("姓名: %s, 年龄: %d, 薪资: %.2f, 已婚: %v\n",name,age,salary,isMarried)// 多变量同时声明x,y,z:=1,2,3fmt.Printf("x=%d, y=%d, z=%d\n",x,y,z)// 交换变量值x,y=y,x fmt.Printf("交换后: x=%d, y=%d\n",x,y)}

常量

packagemainimport"fmt"// 单个常量constPI=3.14159265358979// 批量常量const(StatusOK=200StatusNotFound=404StatusError=500)// iota枚举const(Sunday=iota// 0Monday// 1Tuesday// 2Wednesday// 3Thursday// 4Friday// 5Saturday// 6)// iota表达式const(_=iota// 忽略第一个值KB=1<<(10*iota)// 1 << 10 = 1024MB// 1 << 20 = 1048576GB// 1 << 30 = 1073741824TB// 1 << 40)funcmain(){fmt.Printf("PI = %.4f\n",PI)fmt.Printf("HTTP状态码: OK=%d, NotFound=%d, Error=%d\n",StatusOK,StatusNotFound,StatusError)fmt.Printf("今天是星期: %d\n",Wednesday)fmt.Printf("1KB = %d字节\n",KB)fmt.Printf("1MB = %d字节\n",MB)fmt.Printf("1GB = %d字节\n",GB)}

2.2 数据类型

基本数据类型

packagemainimport("fmt""unsafe")funcmain(){// 整数类型vari8int8=127// -128 到 127vari16int16=32767// -32768 到 32767vari32int32=2147483647// -2^31 到 2^31-1vari64int64=9223372036854775807varu8uint8=255// 0 到 255varu16uint16=65535// 0 到 65535fmt.Printf("int8: %d, 大小: %d字节\n",i8,unsafe.Sizeof(i8))fmt.Printf("int16: %d, 大小: %d字节\n",i16,unsafe.Sizeof(i16))fmt.Printf("int32: %d, 大小: %d字节\n",i32,unsafe.Sizeof(i32))fmt.Printf("int64: %d, 大小: %d字节\n",i64,unsafe.Sizeof(i64))fmt.Printf("uint8: %d, 大小: %d字节\n",u8,unsafe.Sizeof(u8))fmt.Printf("uint16: %d, 大小: %d字节\n",u16,unsafe.Sizeof(u16))// 浮点类型varf32float32=3.14varf64float64=3.14159265358979fmt.Printf("float32: %.2f, 大小: %d字节\n",f32,unsafe.Sizeof(f32))fmt.Printf("float64: %.14f, 大小: %d字节\n",f64,unsafe.Sizeof(f64))// 复数类型varc1complex64=1+2ivarc2complex128=3+4ifmt.Printf("complex64: %v\n",c1)fmt.Printf("complex128: %v\n",c2)fmt.Printf("实部: %.0f, 虚部: %.0f\n",real(c2),imag(c2))// 布尔类型varb1bool=truevarb2bool=falsefmt.Printf("bool: %v, %v\n",b1,b2)// 字节类型 (uint8的别名)varchbyte='A'fmt.Printf("byte: %c, ASCII: %d\n",ch,ch)// Unicode字符类型varrrune='中'fmt.Printf("rune: %c, Unicode: %U\n",r,r)}

字符串类型

packagemainimport("fmt""strings""unicode/utf8")funcmain(){// 字符串声明s1:="Hello, 世界"s2:=`这是一个 多行字符串`fmt.Println(s1)fmt.Println(s2)// 字符串长度fmt.Printf("字节长度: %d\n",len(s1))fmt.Printf("字符长度: %d\n",utf8.RuneCountInString(s1))// 字符串遍历fmt.Println("按字节遍历:")fori:=0;i<len(s1);i++{fmt.Printf("%x ",s1[i])}fmt.Println()fmt.Println("按字符遍历:")fori,ch:=ranges1{fmt.Printf("索引: %d, 字符: %c\n",i,ch)}// 字符串操作fmt.Printf("包含'世界': %v\n",strings.Contains(s1,"世界"))fmt.Printf("前缀'Hello': %v\n",strings.HasPrefix(s1,"Hello"))fmt.Printf("后缀'世界': %v\n",strings.HasSuffix(s1,"世界"))fmt.Printf("索引位置: %d\n",strings.Index(s1,"世界"))fmt.Printf("替换: %s\n",strings.Replace(s1,"世界","Go",1))fmt.Printf("分割: %v\n",strings.Split("a,b,c",","))fmt.Printf("连接: %s\n",strings.Join([]string{"a","b","c"},"-"))fmt.Printf("转大写: %s\n",strings.ToUpper("hello"))fmt.Printf("转小写: %s\n",strings.ToLower("HELLO"))fmt.Printf("去空格: '%s'\n",strings.TrimSpace(" hello "))fmt.Printf("重复: %s\n",strings.Repeat("Go",3))}

2.3 类型转换

packagemainimport("fmt""strconv")funcmain(){// 数值类型转换variint=42varffloat64=float64(i)varuuint=uint(f)fmt.Printf("int: %d\n",i)fmt.Printf("float64: %.2f\n",f)fmt.Printf("uint: %d\n",u)// 字符串与数值转换// 整数转字符串s1:=strconv.Itoa(42)fmt.Printf("整数转字符串: %s, 类型: %T\n",s1,s1)// 字符串转整数i2,err:=strconv.Atoi("123")iferr!=nil{fmt.Println("转换错误:",err)}else{fmt.Printf("字符串转整数: %d, 类型: %T\n",i2,i2)}// 浮点数转字符串s2:=strconv.FormatFloat(3.14159,'f',2,64)fmt.Printf("浮点转字符串: %s\n",s2)// 字符串转浮点数f2,err:=strconv.ParseFloat("3.14",64)iferr!=nil{fmt.Println("转换错误:",err)}else{fmt.Printf("字符串转浮点: %.2f\n",f2)}// 布尔值转换b,err:=strconv.ParseBool("true")iferr!=nil{fmt.Println("转换错误:",err)}else{fmt.Printf("字符串转布尔: %v\n",b)}// 格式化字符串name:="张三"age:=25score:=95.5s3:=fmt.Sprintf("姓名: %s, 年龄: %d, 分数: %.1f",name,age,score)fmt.Println(s3)// 类型判断varxinterface{}="hello"switchv:=x.(type){caseint:fmt.Printf("x是int: %d\n",v)casestring:fmt.Printf("x是string: %s\n",v)casebool:fmt.Printf("x是bool: %v\n",v)default:fmt.Printf("x是未知类型: %T\n",v)}}
http://www.jsqmd.com/news/1206085/

相关文章:

  • Claude Code+DeepSeek API:零配置终端AI编程助手部署指南
  • 2026 上海奢侈品回收门店全盘点,16 区连锁品牌实力深度解析 - 全国二奢机构参考
  • 深蓝词库转换:3分钟搞定跨平台输入法词库同步的完整指南
  • 2026 年重庆装修公司怎么选 新房老房本土高性价比全案落地零增项整装实用避坑指南 - 装修大知识
  • RobotBrain未来路线图:机器人控制技术的创新方向
  • 【小白也能轻松玩转龙虾】虾壳云一键部署新手向,轻松驾驭龙虾智能体(附最新安装包)
  • Krita-AI-Diffusion插件CLIP Vision模型缺失:深度解决方案与实战优化指南
  • YOLO26架构解析与多任务视觉AI实践
  • 51单片机与STM32核心差异及选型指南
  • DDR4内存供需失衡与价格波动深度解析
  • Windows 11家庭版免费开启远程桌面多用户:RDP Wrapper完整指南
  • 2026早餐桃酥品牌大全盘点:正规供应商实力详解,合作选型适配避坑FAQ全指南 - U渠道
  • 靠谱专业 AI 标书工具推荐|2026 招投标 AI 平台测评,合规安全不废标 - 米諾
  • OpenEuler CreateImage 常见问题解答:新手必看的镜像制作避坑指南
  • Mac键位改造指南:用Karabiner-Elements适配Windows习惯
  • Ethereum Security Toolbox实战:Medusa模糊测试工具的高级配置与使用
  • 5步轻松上手:免费AI图像增强工具Upscayl终极指南
  • SuperSplat:重塑3D高斯泼溅编辑的游戏规则
  • Agent-S3:超越人类的智能助手,如何让AI像人一样操作计算机?
  • 第三章:流程控制
  • 苏州新办企业税务登记怎么做?理清税种核定关键事项
  • NCP协议解析:从ARPANET到TCP/IP的演进历程
  • 2026 年 7 月营口贵金属回收完整实测指南|足金 / 18K / 铂金 / 白银 / 钻石全品类回收、6 家正规门店地址电话、全套避坑 - 不晚生活号
  • 5分钟掌握Unity卡通渲染的终极解决方案:UniToon物理卡通着色器深度解析
  • Ascend C FP8数据转换函数
  • CVAT完全指南:从零开始的计算机视觉标注工具终极教程
  • 3步掌握微信聊天记录管理:从数据备份到AI记忆的完整指南
  • 3大核心能力:kohya_ss如何让AI绘画模型训练变得触手可及
  • 重庆爱彼回收价格查询和各大回收平台实测排行(2026年7月最新数据) - 尊奢回收二奢平台
  • FPGA仿真实践:ModelSim与Lattice MXO2开发指南