每天5分钟入门Go语言:基础概念与控制结构

每天5分钟入门Go语言:基础概念与控制结构

第一个Go程序

在Go语言中,每个程序都从main包和main函数开始执行。

例子

package main

import "fmt"

func main() {
  fmt.Println("Hello, world")
}

应用场景:打印欢迎信息

package main

import "fmt"

func main() {
  fmt.Println("Welcome to the Go programming workshop!")
}

在这个应用场景中,程序会在控制台输出欢迎信息,适用于教学环境或工作坊的开始。

变量声明

在Go中,变量在使用前必须声明,并指定类型。

例子

package main

import "fmt"

var a int
var (
  b bool
  c float32
  d string
)

func main() {
  a = 42
  b, c = true, 32.0
  d = "string"
  fmt.Println(a, b, c, d)
}

应用场景:员工信息管理

package main

import "fmt"

func main() {
  var employeeID int = 1001
  var isFullTime bool = true
  var salary float32 = 75000.00
  var employeeName string = "John Doe"
  
  fmt.Printf("Employee ID: %d, Full-Time: %t, Salary: %.2f, Name: %s\n", 
             employeeID, isFullTime, salary, employeeName)
}

在这个应用场景中,我们声明并初始化了与员工相关的变量,然后打印出员工的详细信息。

类型

Go提供了多种内置类型,包括整型、浮点型、布尔型、字符串等。

例子

package main

import "fmt"

func main() {
  const a int32 = 12
  const b float32 = 20.5
  var c complex128 = 1 + 4i
  var d uint16 = 14
  
  n := 42
  pi := 3.14
  x, y := true, false
  z := "Go is awesome"
  
  fmt.Printf("user-specified types:\n %T %T %T %T\n", a, b, c, d)
  fmt.Printf("default types:\n %T %T %T %T %T\n", n, pi, x, y, z)
}

应用场景:处理用户输入

package main

import "fmt"

func main() {
  var age int
  var isMember bool
  var membershipFee float32
  var username string
  
  fmt.Println("Enter your age:")
  fmt.Scan(&age)
  
  fmt.Println("Are you a member? (true/false)")
  fmt.Scan(&isMember)
  
  fmt.Println("Enter your membership fee:")
  fmt.Scan(&membershipFee)
  
  fmt.Println("Enter your username:")
  fmt.Scan(&username)
  
  fmt.Printf("Thank you, %s! You are %d years old. Member: %t, Membership Fee: %.2f\n", 
             username, age, isMember, membershipFee)
}

在这个应用场景中,我们声明了几个变量来存储用户的信息,并通过fmt.Scan从用户那里获取输入。

数组

数组是相同数据类型元素的集合,具有固定长度。

例子

package main

import "fmt"

func main() {
  var DeploymentOptions [4]string = [4]string{"R-pi", "AWS", "GCP", "Azure"}
  
  for i := 0; i < len(DeploymentOptions); i++ {
    option := DeploymentOptions[i]
    fmt.Println(i, option)
  }
}

应用场景:处理考试成绩

package main

import "fmt"

func main() {
  var scores [5]float32 = [5]float32{85.5, 92.0, 78.3, 88.6, 91.2}
  
  var sum float32 = 0
  for i, score := range scores {
    fmt.Printf("Student %d scored %f\n", i+1, score)
    sum += score
  }
  
  average := sum / float32(len(scores))
  fmt.Printf("The average score is: %.2f\n", average)
}

在这个应用场景中,我们声明了一个数组来存储学生的考试成绩,并计算了平均分。

映射 (Maps)

映射是存储键值对的数据结构,具有常数时间的查找效率。

例子

package main

import "fmt"

func main() {
  firstReleases := map[string]int{
    "C": 1972,
    "C++": 1985,
    "Java": 1996,
    "Python": 1991,
    "JavaScript": 1996,
    "Go": 2012,
  }
  
  for k, v := range firstReleases {
    fmt.Printf("%s was first released in %d\n", k, v)
  }
}

应用场景:课程注册系统

package main

import "fmt"

func main() {
  var courseRegistration = map[string]int{
    "Math": 101,
    "Science": 102,
    "History": 103,
    "Geography": 104,
  }
  
  fmt.Println("Course Registration Numbers:")
  for course, regNum := range courseRegistration {
    fmt.Printf("%s: %d\n", course, regNum)
  }
}

在这个应用场景中,我们使用映射来存储不同课程的注册编号,并打印这些信息。

控制流

Go提供了if-elseswitch等控制流语句。

例子

package main

import "fmt"

func average(x []float64) (avg float64) {
  total := 0.0
  if len(x) == 0 {
    avg = 0
  } else {
    for _, v := range x {
      total += v
    }
    avg = total / float64(len(x))
  }
  return
}

func main() {
  x := []float64{2.15, 3.14, 42.0, 29.5}
  fmt.Println(average(x)) // 19.197499999999998
}

应用场景:检查考试成绩是否通过

package main

import "fmt"

func main() {
  var score float64 = 75.0
  
  if score >= 60.0 {
    fmt.Println("Congratulations! You have passed the exam.")
  } else {
    fmt.Println("You have failed the exam. Please try again.")
  }
  
  // 使用switch进行更复杂的逻辑判断
  switch {
  case score >= 90.0:
    fmt.Println("A: Excellent work!")
  case score >= 80.0:
    fmt.Println("B: Good job!")
  case score >= 70.0:
    fmt.Println("C: Satisfactory.")
  case score >= 60.0:
    fmt.Println("D: You passed.")
  default:
    fmt.Println("F: You have failed.")
  }
}

在这个应用场景中,我们使用if-else语句来确定学生是否通过了考试,并使用switch语句来提供更详细的成绩评价。

本文由mdnice多平台发布

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值