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

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的变量操作和基础类型转换,为后续流程控制学习打下基础。

相关文章:

  • Redis速成(1)
  • MySQL的三种并发问题和四种隔离级别
  • 机器学习数学基础:34.二列相关教程
  • 学习笔记--电磁兼容性EMC
  • 用AI玩游戏1——狼人杀六人局
  • 大白话Vue2和Vue3双向数据绑定的原理
  • CMU Sphinx、Kaldi 和 Mozilla DeepSpeech 三个开源语音识别引擎的综合比较
  • Linux 常见命令全解析
  • 课程1. 深度学习简介
  • Vue使用Three.js加载glb (gltf) 文件模型及实现简单的选中高亮、测距、测面积
  • Unity汽车笔记
  • prometheus API清理数据
  • Vue3 + Vite使用 vue-i18n
  • C++术语
  • 设计模式教程:备忘录模式(Memento Pattern)
  • 数据结构与算法设计-作业4-excel表合并与数据整理
  • opencv交叉编译报错:undefined reference to `png_riffle_palette_neon
  • 大白话TypeScript第四章项目实践
  • 采用TypeHandler对隐私数据自动加解密
  • hot100-二叉树
  • 俄外交部:俄乌伊斯坦布尔谈判改在当地时间15日下午举行
  • 现场丨在胡适施蛰存等手札与文献间,再读百年光华
  • 伊朗最高领袖顾问:伊朗愿承诺永不制造核武,换取美解除制裁
  • 坚持吃素,是不是就不会得高血脂了?
  • 乌总统:若与普京会谈,全面停火和交换战俘是主要议题
  • 日本前卫艺术先驱群展上海:当具体派相遇古树古宅