Немного уродливый способ:
char *pos;
if ((pos=strchr(Name, '\n')) != NULL)
*pos = '\0';
else
/* input too long for buffer, flag error */
Немного странный способ:
strtok(Name, "\n");
Обратите внимание, что функция strtok
не работает должным образом, если пользователь входит пустую строку (т.е. нажмите только Enter). Он оставляет неизменным \n
.
Конечно, есть и другие.
Вот немного более краткая реализация принятого ответа:
package main
import (
"fmt"
"sort"
)
type Member struct {
FirstName string
LastName string
}
func main() {
members := []Member{
{"John", "Doe"},
{"Jane", "Doe"},
{"Mary", "Contrary"},
}
fmt.Println(members)
sort.Slice(members, func(i, j int) bool {
return members[i].LastName < members[j].LastName || members[i].FirstName < members[j].FirstName
})
fmt.Println(members)
}
Выполнение распечатает следующий вывод:
[{John Doe} {Jane Doe} {Mary Contrary}]
[{Mary Contrary} {Jane Doe} {John Doe}]
Это как ожидалось: участники печатаются в порядке возрастающей фамилии, где в случае связи, они печатаются в порядке имени.