1、编写一个Go程序,用于计算其所有数字命令行参数的总和。
以下是实现该功能的Go程序示例:
package main
import (
"fmt"
"os"
"strconv"
)
func main() {
args := os.Args[1:]
sum := 0
for _, arg := range args {
num, err := strconv.Atoi(arg)
if err == nil {
sum += num
}
}
fmt.Println("所有数字命令行参数的总和是:", sum)
}
该程序首先获取命令行参数,然后遍历这些参数,将能成功转换为整数的参数累加到总和中,最后输出总和。
2、编写一个 Go 程序,计算其所有浮点型命令行参数的平均值。
以下是一个满足需求的 Go 程序示例:
package main
import (
"fmt"
"os"
"strconv"
)
func main() {
args := os.Args[1:]
if len(args) == 0 {
fmt.Println("没有提供命令行参数")
return
}
var sum float64
var count int
for _, arg := range args {
num, err := strconv.ParseFloat(arg, 64)
if err == nil {
sum += num
count++
}
}
if count == 0 {
fmt.Println("没有有效的浮点型参数")
} else {
average := sum / float64(count)
fmt.Printf("平均值是: %.2f\n", average)
}
}
这个程序首先检查是否有命令行参数,如果没有则输出提示信息并返回。接着遍历所有参数,尝试将其转换为浮点型,如果转换成功则累加到总和中并增加计数。最后,如果有有效的浮点型参数,则计算平均值并输出;否则输出没有有效浮点型参数的提示信息。
3、编写一个Go程序,持续读取整数,直到输入单词“STOP”为止。
以下是一个满足需求的Go程序示例:
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for {
fmt.Print("请输入一个整数或输入 STOP 停止: ")
scanner.Scan()
input := scanner.Text()
if input == "STOP" {
break
}
num, err := strconv.Atoi(input)
if err != nil {
fmt.Println("输入无效,请输入一个有效的整数或 STOP。")
continue
}
fmt.Printf("你输入的整数是: %d\n", num)
}
fmt.Println("程序停止。")
}
该程序会持续提示用户输入整数,当用户输入“STOP”时,程序停止。如果输入的不是有效的整数,会提示用户重新输入。
4、编写一个在 Go 程序中使用自定义 C 代码的示例。
以下是一个在 Go 程序中使用自定义 C 代码的示例,将 C 代码包含在 Go 源文件中。源文件名为 cGo.go ,分为三个部分:
第一部分代码如下:
package main
//#include <stdio.h>
//void callC() {
// printf("Calling C code!\n");
//}
import "C"
可见,C 代码包含在 Go 程序的注释中,由于使用了 C Go 包, go 工具知道如何处理这类注释。
第二部分程序包含如下 Go 代码:
import "fmt"
5、在 Linux 机器上使用 strace(1) 来检查一些标准 Unix 实用程序(如 cp(1) 和 ls(1))的操作,会看到什么?
使用 strace(1) 检查时,输出会显示每个系统调用

最低0.47元/天 解锁文章
1131

被折叠的 条评论
为什么被折叠?



