在可选数组的末尾附加元素的正确方法是什么?假设我有一个可选的数组myArray,我想在末尾附加'99'.Append()不适用于nil数组,因此我能找到的唯一解决方案如下,但它看起来并不优雅:
var myArray = [Int]?()
if myArray?.count > 0 {
myArray?.append(99)
} else {
myArray = [99]
}
Run Code Online (Sandbox Code Playgroud) 我试图从System.Collections.Generic.LinkedList中删除一个节点,其中T是一个具有多个属性的对象.我想基于匹配其中一个属性删除节点,例如T.paint.color ="blue".起初我尝试过:
foreach (Car carNode in carList)
{
if (carNode.paint.color == "blue")
{
carList.Remove(carNode);
}
}
Run Code Online (Sandbox Code Playgroud)
当然,这失败了"在枚举器实例化后修改了集合"错误.MSDN上的示例是一个简单的字符串数组,使用类似于:
sentence.Remove("old");
Run Code Online (Sandbox Code Playgroud)
我的问题是如何(或者如果)我可以使用(使用伪代码):
carList.Remove(the node where carList.paint.color == "blue");
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有以下创建端点的 API 服务器片段,我想将“clusterID”抽象为处理程序中的路径参数。这是路由器部分
func main() {
router := mux.NewRouter().StrictSlash(true)
sub := router.PathPrefix("/api/v1").Subrouter()
sub.Methods("GET").Path("/device/{clusterID}/job").HandlerFunc(authDev(getJob))
...
Run Code Online (Sandbox Code Playgroud)
下面是处理程序的片段。我像往常一样使用mux.Vars()
. 如果我向 发送请求localshost/api/v1/device/cluster123/job
,处理程序将按预期被调用,但mux.Vars(r)
返回一个空映射,而不是按预期返回带有 的映射clusterID=cluster123
。Mux 不支持路径中间的变量吗?我知道我可以手动解析路径,但我希望 Mux 为我做这件事。
func getJob(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
log.Println(params["clusterID"]) // outputs an empty string
log.Println(params) // outputs an empty map
...
Run Code Online (Sandbox Code Playgroud)