Golang求助:这段代码该怎么写?

Golang求助:这段代码该怎么写? 要求: 编写一个函数 shorter (words []string) int,该函数接收一个字符串切片,并返回其中最短字符串的字节长度。你可以使用下图所示的 main 函数来测试它。

Screenshot (5)

10 回复

你在让它工作时遇到了什么困难?

更多关于Golang求助:这段代码该怎么写?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


看起来你应该自己完成你的学校作业 🙂

是的,我开始写了,但我不知道该如何继续解决它。

我能得到一些解决这个问题的建议或提示吗?我只是想问问这些。

根据您已有的内容提供建议会更容易。否则,建议就是实现一个满足练习要求的函数。

我们可能给出的任何其他提示,都可能是您已经知道的内容。这对我们双方来说都是浪费时间……

  • 您是否已经有任何已开始编写或部分解决问题的现有代码?分享这些代码可以帮助我理解您的方法并提出改进建议。

你能说得更具体一点吗?你具体在哪个部分遇到了问题?

你贴出的截图看起来像是来自课程书籍或网站,我猜你是想让我们帮你做作业。我们通常不会替别人做作业,而是帮助他们克服困难,从而让他们自己解决问题,最终在这个过程中学到东西。

另外,我通常认为,解决这类作业所需的一切内容,在最近的课程材料中都有解释。

你好,

这个链接可能对你有帮助:https://www.golangprograms.com/golang-get-number-of-bytes-and-runes-in-a-string.html

这个函数就是一个循环(就像你 main() 函数里的那个),里面包含一个比较操作来存储最小值,并在最后返回该值。 记得用一个较大的值来初始化用于比较的变量。 我不是在替你完成练习……但如果你根据我的解释还无法完成的话…… ;)

处理任何编程任务的一个好建议:

首先用简单的语言描述一个人需要做什么来解决问题——我们称之为伪代码。

如果你的任务是在列表中找出最大的质数,伪代码可以这样写:

获取列表中的第一个数字
检查它是否是质数
是:记住这个数字

然后对列表中的所有数字重复:
检查这个数字是否是质数
并且检查这个数字是否比记住的数字大
是:用新的数字替换记住的数字

列表完成后,记住的数字就是解决方案

之后,你可以尝试将每一行翻译成 Go 代码,从而得到一个可以测试和完善的解决方案。

package main

import (
	"fmt"
)

func shorter(words []string) int {
	if len(words) == 0 {
		return 0
	}
	
	minLen := len(words[0])
	for _, word := range words[1:] {
		if len(word) < minLen {
			minLen = len(word)
		}
	}
	return minLen
}

func main() {
	fmt.Println(shorter([]string{"hello", "world", "go", "programming"}))
	fmt.Println(shorter([]string{"a", "ab", "abc"}))
	fmt.Println(shorter([]string{}))
}

输出:

2
1
0

说明:

  1. 首先处理空切片情况,直接返回0
  2. 将第一个字符串长度作为初始最小值
  3. 遍历剩余字符串,使用len()获取字节长度(Go字符串默认UTF-8编码)
  4. 遇到更短长度时更新最小值
  5. 返回最终的最小长度值

注意:len()返回的是字节数,不是字符数(rune数量)。如果需要考虑Unicode字符数,需要使用utf8.RuneCountInString()

回到顶部