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

50周学习go语言:第2周 基础语法与温度转换程序

以下是第二周Go语言基础语法的详细教程,包含变量声明、基本类型操作和温度转换任务的完整实现指南:


第二周:基础语法与温度转换程序


一、变量声明

1. var关键字声明
// 标准声明格式(类型在变量名后)
var 变量名 类型 =// 示例:
var age int = 25        // 显式指定类型
var name = "Alice"      // 类型推断(自动推导为string)
var isStudent bool      // 未赋值时使用零值(bool零值为false)
2. 短声明(:=)
// 只能在函数内部使用
变量名 :=// 示例:
temperature := 36.5     // 自动推导为float64
city := "Beijing"       // string类型
3. 两种方式对比
声明方式使用场景示例
var包级变量/需要显示指定类型var count int = 10
:=函数内部局部变量name := "Bob"

二、基本数据类型

1. 数值类型
  • int:整型(自动选择系统位数)
  • float64:双精度浮点型(推荐使用)
  • 其他:int8/uint16/float32等(需要特定精度时使用)
2. 字符串类型
var message string = "Hello, 世界"  // UTF-8编码
str := `多行
原始字符串`                        // 反引号定义多行字符串
3. 布尔类型
var isActive bool = true  // 只能为true/false
isValid := (10 > 5)       // 通过表达式赋值
4. 零值特性
类型零值
数值0
字符串“”
布尔false

三、示例代码

package main

import "fmt"

// 包级变量声明
var version string = "1.0"

func main() {
    // 短声明示例
    name := "Gopher"
    age := 3
    
    // var声明示例
    var isRobot bool
    var weight float64 = 12.5
    
    fmt.Printf("Name: %s, Age: %d\n", name, age)
    fmt.Println("Is robot:", isRobot)  // 输出零值
    fmt.Printf("Weight: %.1fkg\n", weight)
}

四、任务:温度转换程序

要求
  1. 从命令行输入摄氏温度(如:36.5)
  2. 使用公式转换为华氏温度:℉ = ℃×1.8 +32
  3. 输出转换结果(保留1位小数)
  4. 代码需同时演示var和:=两种声明方式
分步教程
  1. 创建项目目录
mkdir temp-converter
cd temp-converter
go mod init tempconverter
  1. 编写代码(main.go)
package main

import (
    "fmt"
)

func main() {
    // 使用var声明变量
    var celsius float64
    
    // 获取用户输入
    fmt.Print("请输入摄氏温度(℃):")
    fmt.Scanln(&celsius)  // 注意取地址符&

    // 使用短声明转换温度
    fahrenheit := celsius*1.8 + 32
    
    // 输出结果(保留1位小数)
    fmt.Printf("转换结果:%.1f℉\n", fahrenheit)
}
  1. 运行程序
go run main.go
# 输入示例:36.5
# 预期输出:转换结果:97.7℉

五、常见问题解决

  1. 报错:non-integer value
    确保使用float64类型,输入时不要包含非数字字符

  2. Scanln无法读取输入
    检查是否添加取地址符&celsius

  3. 精度丢失问题
    计算时至少有一个操作数是浮点类型:

    // 错误示例(整数计算)
    5/9 = 0  
    // 正确写法
    5.0/9.0 = 0.555...
    
  4. 变量未使用错误
    Go编译器不允许存在未使用的变量


学习成果检查

  • 能正确声明包级变量和局部变量
  • 理解float64和int的区别
  • 程序能正确处理小数输入
  • 输出结果保留1位小数
  • 代码中包含两种变量声明方式

扩展练习
尝试添加华氏转摄氏功能,使用flag包实现命令行参数输入(示例命令:-t 98.6 -scale F

完成本练习后,你将掌握Go的变量操作和基础类型转换,为后续流程控制学习打下基础。


http://www.kler.cn/a/562416.html

相关文章:

  • UE(虚幻)学习(五)初学创建NPC移动和遇到的问题
  • FFMPEG编码容错处理解决办法之途径----升级库文件
  • 一周掌握Flutter开发--3、布局与 UI 组件
  • 基于“桌面云+RPA”技术金融应用实施建议
  • STM32--SPI通信讲解
  • ​腾讯云 轻量云对象存储
  • Redis实战篇《黑马点评》5
  • vue3封装一个悬浮操作固定列表格组件(性能版)
  • 声明式UI差分刷新机制的原理,应用场景及优缺点
  • 计组笔记day-01
  • 点云配准技术的演进与前沿探索:从传统算法到深度学习融合(1)
  • DeepSeek+谷云科技智能体,快速构建企业知识问答
  • CryptoJS库中WordArray对象支持哪些输出格式?除了toString() 方法还有什么方法可以输出吗?WordArray对象的作用是什么?
  • Vue 3中的路由和Vue Router 4有哪些变化?
  • 计算机网络————(三)
  • Java Web应用中的跨站脚本攻击(XSS)防护策略
  • linux-c 字节序问题--大小端
  • Html 5简介(学习笔记)
  • BIO系统调用strace查看IO阻塞
  • 【Java 基础】-- Java 接口中的 @Public 和 @FunctionalInterface 注解详解